instanceof 运算符原理
instanceof主要是通过对象原型链来实现对某对象是否是某构造函数实例的判断。假设 obj instanceof constructor,js引擎会在obj的原型链上依次查找constructor.prototype是否存在,知道查找到原型链尽头。只要constructor.prototype在obj的原型链上就返回true,否则返回false。
注意:instanceof运算符只能用于检查某个对象是否是某个构造函数的实例,不能用于基本类型的检查,如string、number等
手写实现
function instanceFun(obj,cons){
let consPro=cons.prototype
let objPro=obj.__proto__
while(objPro!==null){
if(objPro===consPro){
return true
}
objPro=objPro.__proto__
}
return false
}