instanceof原理

169 阅读1分钟

object instanceof constructor

instanceof 和 typeof 非常的类似。instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。与 typeof 方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。

console.log(Object instanceof Object);//true 
console.log(Function instanceof Function);//true 
console.log(Number instanceof Number);//false 
console.log(String instanceof String);//false 

console.log(Function instanceof Object);//true 

console.log(Foo instanceof Function);//true 
console.log(Foo instanceof Foo);//false

instanceof的手写

  function newInstanceof(L,R){
    let O=R.prototype;
    L=L.__proto__;
    while(true){
        if(L===null) return false;
        if(O===L) return true;
        L=L.__proto__;
    } 
}
console.log(newInstanceof(Function,Object));