定义:判断一个构造函数的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