instanceof
function F(){}
let f = new F();
console.log(f instanceof F) // true
------
console.log(2,Number) // true
instanceof
是用于判断构造函数的prototype属性是否出现在某个实例对象的原型链上
实现:
function myInstanceof(left, right) {
let proto = Object.getPrototypeOf(left); // 获得原型左边的原型
let prototype = right.prototype; // 获得右边的原型
while(true) {
if(!proto) return false; // 3、原型链的尽头是null 直到最后没有找到的话 说明左右不是一条‘路’的
if(proto === prototype) return true; // 1、如果左右两个原型一样的话 说明右边的构造函数的prototype 在左边实例对象的原型链上
proto = Object.getPrototypeOf(proto); // 2、如果没有比对成功那么继续往上找左边的原型
}
}
function F(){}
let f = new F();
console.log(myInstanceof(f,F)); // true