实现原理
instanceof
的实现实际上是调用JS的内部函数 [[HasInstance]]
来实现的
其实现原理是:只要右边变量的prototype
在左边变量的原型链上即可。因此instanceof
在查找过程中会遍历边变量的原型链,直到找到右边变量的prototype
,如果查找失败会返回false。
instanceof 实现
L 的 proto 是不是等于 R.prototype,不等于再找 L.proto.proto 直到 proto 为 null
// L 表示左表达式,R 表示右表达式
function instance_of(L, R) {
var O = R.prototype;
L = L.__proto__;
while (true) {
if (L === null) return false;
// 这里重点:当 O 严格等于 L 时,返回 true
if (O === L) return true;
L = L.__proto__;
}
}
网友评论