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实现

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容