instanceof的定义是什么?
instanceof在MDN的定义如下:
标准中
实现instanceof过程
如果实例对象(也就是左边传入的值left
)__proto__
不是强等于构造函数(也就是右边传入的值right
)的prototype
,就一直朝着实例对象的原型链往上找,直到找到null为止,就证明构造函数的prototype
属性并没有出现在实例对象的原型链上。
可以结合下方的示意图来理解一下(图片来自于:mollypages.org)
下面的三种写法均基于这个思想:
while循环写法
function myInstanceOf(left, right) {
// 取right的显示原型
let proto = right.prototype;
// 取left的隐式原型
left = left.__proto__;
while