简单理解instanceof

78 阅读1分钟

定义:判断一个构造函数的prototype属性所指向的对象是否在另一个待检测对象的原型链上。

需要先理解原型链的知识,不了解的先学习原型链吧。

核心:

   const obj=new Object();
   console.log(obj.__proto__===Object.prototype);//true        

作用:判断数据的类型

  console.log([] instanceof Array);//true
  console.log(null instanceof Object);//false
  console.log(Object.create(null) instanceof Object);//false
  console.log({} instanceof Object);//true
  console.log("" instanceof String);//false
  console.log(new String("") instanceof String);//true

注意:被检测的一定要是对象!

实现一个instanceof:

const myInstanceof=(left,right)=>{
    if(left==null||typeof left!=="object")return false;
    let proto=left.__proto__,
    rightPro=right.prototype;
    while(true){
        if(proto==null)return false;
        if(proto===rightPro)return true;
        proto=proto.__proto__;    
    }
}
console.log(myInstanceof([],Array));//true