29.instanceof的原理
instanceof可以正确判断对象的类型
用于判断某个实例是否属于某个构造函数
在继承关系中用来判断一个实例是否属于它的父类型或者祖先类型的实例;
实现原理是通过判断实例对象的原型属性proto和构造函数或者父类的原型对象prototype是否相等,循环遍历,相等则返回true;(简单的说就是只要左边的变量原型链上有右边变量的prototype属性即可)
1)语法
var obj=new Object()
obj instanceof Object //true
2)底层原理
function myInstanceof(left, right) {
left = left.__proto__;
right = right.prototype;
while (true) {
if (left === null || left === undefined) {
return false
}
if (left === right) {
return true
}
//即上面均不满足时,继续往原型链上查找
left = left.__proto__;
}
}