跳到主要内容

README

instanceof

instanceof 的运算规则很复杂:

假设instanceof运算符左边是L,右边是R
L instanceof R //instanceof运算时,通过判断L的原型链上是否存在R.prototype
L.__proto__.__proto__ ..... === R.prototype//递归查找,找到顶层为止,如果存在返回true 否则返回false

一句话理解 instanceof 的运算规则为:

instanceof 检测左侧的 __proto__ 原型链上,是否存在右侧的 prototype 原型。

我的理解就是:

判断右侧的构造函数能不能一步一步构造出的左侧这个实例. 用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置.

[] instanceof Array // true
[] instanceof Object // true Object->Array->[]
function(){} instanceof Object // true