instanceof
是 JavaScript 中的一个运算符,用于检测构造函数的 prototype
属性是否出现在对象的原型链中的任何位置。如果出现在原型链中,则返回 true
,否则返回 false
。
function myInstanceof(obj,constructor) {
let proto = obj.__proto__
while(true) {
if(proto === null) {
return false
}
if(proto===constructor.prototype) {
return true
}
proto = proto.__proto__
}
}
但是需要注意的是__proto__
在一些环境或配置中可能是不可用的。在严格模式下,修改 __proto__
是不被允许的。此外,这个实现也没有考虑一些更复杂的情况,比如对象可能被冻结或者密封,或者构造函数的 prototype
可能被修改。