instanceof可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的prototype
自己实现一个instanceof
如何实现
- 获取类型的原型
- 获取对象的原型
- 然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为null,因为原型链最终为null
function myInstanceof(left,right){
//获取类型的原型
let prototype = right.prototype;
//获取对象的原型
left = left._proto_;
while(true){
//然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为 null,因为原型链最终为 null
if(left === null || left === undefined)
return false
if (prototype === left)
return true;
left = left._proto_
}
}