仅用于本人记笔记用,有不当或者不完整的地方欢迎大家多多指教!谢谢!
instanceof 运算符用于判断构造函数的 prototype 属性是否出现在对象的原型链中的任何位置。
Object.getPrototypeOf(obj) 方法用来获取指定obj对象的原型
function myInstanceof(left, right) {
// 获取对象的原型
let proto = Object.getPrototypeOf(left)
// 获取构造函数的 prototype 对象
let prototype = right.prototype;
// 判断构造函数的 prototype 对象是否在对象的原型链上
while (true) {
if (!proto) return false;
if (proto === prototype) return true;
// 如果没有找到,就继续从其原型上找,Object.getPrototypeOf方法用来获取指定对象的原型
proto = Object.getPrototypeOf(proto);
}
}