原型和原型链-instanceof的底层实现原理

instanceof的底层实现原理(参考文档

  instanceof的实现实际上是调用JS的内部函数 [[HasInstance]] 来实现的,其实现原理是:只要右边变量的prototype在左边变量的原型链上即可。因此instanceof在查找过程中会遍历左边变量的原型链,直到找到右边变量的prototype,如果查找失败会返回false。

function instance_of(L, R) {     // L 表示instanceof左边,R 表示instanceof右边
    let O = R.prototype;         // 取 R 的显示原型
    L = L.__proto__;             // 取 L 的隐式原型
    while (true) {               // 循环执行,直到 O 严格等于 L
         if (L === null) return false;
         if (O === L) return true;
         L = L.__proto__;        // 获取祖类型的__proto__
    }
}    

 

posted @ 2019-12-12 15:30  fanmengfei  阅读(443)  评论(0编辑  收藏  举报