其实重写一个instanceof方法是很简单 我们只需要弄懂原型链就好了,他是通过原型链去查找的,接下来我们看代码
// 创建一个构造器
function Box() {}
// 实例
const b1 = new Box();
// 这是原生的
// console.log(b1 instanceof Box); // true
// 接下来我们重写instanceof方法 我们只能用一个函数去重写
function _instanceof(obj, type) {
// 拿到实例的原型对象
let protoObj = obj.__proto__;
// 进行while循环
while (protoObj) {
// 判断实例原型对象是否等于我们传进来的构造器
if (protoObj === type.prototype) return true;
// 走到这里说明该实例不等于这次的原型对象
// 我们再向上查找
protoObj = protoObj.__proto__;
}
// 如果都没有的话 我们就会返回false
return false;
}
console.log(_instanceof(b1, Box)); // true