js实现instanceof
实现 instanceof 的原理
instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。手动实现需要遍历对象的原型链并与构造函数的 prototype 属性进行比较。

实现代码
function myInstanceof(obj, constructor) {
// 获取对象的原型
let proto = Object.getPrototypeOf(obj);
// 获取构造函数的 prototype 对象
const prototype = constructor.prototype;
// 遍历原型链
while (proto !== null) {
if (proto === prototype) {
return true;
}
proto = Object.getPrototypeOf(proto);
}
return false;
}
代码解析
Object.getPrototypeOf() 方法用于获取指定对象的原型。通过循环不断获取对象的原型,并与构造函数的 prototype 属性进行比较。

如果找到匹配的原型,返回 true。如果遍历完整个原型链仍未找到匹配项,返回 false。
使用示例
function Person() {}
const p = new Person();
console.log(myInstanceof(p, Person)); // true
console.log(myInstanceof(p, Object)); // true
console.log(myInstanceof([], Array)); // true
console.log(myInstanceof({}, Array)); // false
注意事项
原始值(如数字、字符串、布尔值)使用 instanceof 检测会返回 false,手动实现也遵循这一行为。
console.log(myInstanceof(123, Number)); // false
console.log(myInstanceof('str', String)); // false






