instanceof运算符是用来检测构造函数prototype是否出现在实例/对象的原型链中;
模拟实现instanceof
function instanceof(obj, ctor) {
// 获取构造函数原型
let ctorProto = ctor.prototype;
// 获取实例/对象原型
let objProto = Object.getPrototypeOf(obj);
while(1) {
// 实例/对象的原型最终指向null, 未找到返回false
if (objProto === null) return false;
// 原型相同返回true
if (objProto === ctorProto) return true;
objProto = Object.getPrototypeOf(objProto);
}
return false;
}