JS 中有一个奇怪的现象:
我们知道,instanceof
关键字是用于判断左值的原型链上是否存在右值,那按照这样的话不就是说 Object
和 Function
存在循环继承了吗?
那 Function 和 Object 的关系到底是什么呢?
探究
其实对于所有构造函数/类,其 __proto__
属性都是指向了一个函数:ƒ () { [native code] }
,而 Function
的 prototype
属性也指向了这个函数:
而这个 [naitve code]
函数的 __proto__
指向了 Object.prototype
,因此可以说函数也是对象,所以 JS 中的所有对象都是由 Object.prototype
衍生出来的。
因此,第一张图片