先回顧一下 instanceof 的用法:
Function instanceof Object; // true
[1,2,3] instanceof Array; // true
其中的原理是什么呢?
JS 是基于原型鏈面向?qū)ο蟮恼Z言,上述例子中的Function、[1,2,3]就是基于Object、Arraynew出來的實(shí)例。在Function、[1,2,3]的屬性中有一個__proto__屬性指向其原型的prtotype屬性;該屬性包括了此原型所能被繼承的所有方法。
在原型的prototype屬性中,有一個constructor屬性自己的構(gòu)造器。
回到 instanceof 上,從上敘述中既可以推斷出 instanceof 的原理:
[1,2,3] instanceof Array <=> [1,2,3].__proto__.constructor === Array