JS基础-instanceof原理及其实现

实现原理

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__;
  }
}

参考

instance原理
instance实现

你可能感兴趣的:(JS基础-instanceof原理及其实现)