instanceof原理

引用一下MDN对instanceof的解释:“instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。”

代码:

function myInstanceof(leftVaule, rightVaule) { 
  // 是否为引用类型
if(typeof leftVaule !== 'object' || leftVaule === null) return false let rightProto
= rightVaule.prototype leftVaule = leftVaule.__proto__ while (true) { if (leftVaule === null) { return false; } if (leftVaule === rightProto) { return true; }
     // 指向下一个原型 leftVaule
= leftVaule.__proto__ } }

再结合一下这张图

 

 

{} instanceof Object // true

 

可以看出,instanceof其实通过遍历判断右边Object.prototype在不在{}的原型链上。即通过遍历判断右边变量的原型在不在左边变量的原型链上。

posted @ 2022-04-23 17:24  Sofiaღ  阅读(44)  评论(0编辑  收藏  举报