思路:instanceof 函数功能是用于检测构造函数的prototype是否在某个实例的原型链上。那么我们可以先获取该构造函数的原型链,一一检测,如果该实例的原型链上有该构造函数的原型,那么返回true,否则返回false。
function instanceOf(left,right) {
let protoLeft = Object.getPrototypeOf(left);//获取对象的直接原型链上的原型
let protoRight = right.prototype;
while (protoLeft !== null){
if(protoLeft === protoRight){
return true;
}
protoLeft = Object.getPrototypeOf(protoLeft);//继续向上获取该原型链上的原型
}
return false;
}
console.log(instanceOf([],Array));
console.log(instanceOf({},Array));
结果: