// 首先获取对象的原型,可以通过对象的 __proto__ 属性获取,但是由于该属性并不是标准属性,因此不推荐使用。推荐使用 Object.getPrototypeOf() 方法获取对象的原型。
// 获取构造函数。
// 判断构造函数的原型是否在对象的原型链上,如果是则返回 true,否则继续沿着原型链向上查找
function myInstanceOf(obj, constructor) {
// 获取对象的原型
let proto = Object.getPrototypeOf(obj);
// 获取构造函数的原型
let prototype = constructor.prototype;
// 判断构造函数的原型是否在对象的原型链上
while (proto !== null) {
if (proto === prototype) {
return true;
}
proto = Object.getPrototypeOf(proto);
}
return false;
}