关于原型链的知识,我们知道原型链的顶端是null。在原型链中Object构造函数和Function构造函数的位置如下图。所以会出现 Function instanceof Object 和 Object instanceof Function 的值都为true的情况,还有一些指向的问题
圆代表对象或函数 ,,OP和FP(函数)是两个特殊的对象
方框代表属性
(1)先解释Function instanceof Object为什么会是true,本质上Function instanceof Object是检测Function的原型链上是否有Object.prototype。从图上可以看到
Function的原型链:Function.__proto__ (FP)----->Function.__proto__.__proto__(OP)----> Function.__proto__.__proto__(null)。
Object.prototype 就是 Function.__proto__.__proto__(OP),所以Function instanceof Object值为true。另外一种情况同理。
(2)图上可以看出下面这个关系
Object.prototype === Object.__proto__.__proto__
Function.prototype === Function.__proto__ === Object.__proto__
Function.prototype.__proto__ === Object.prototype
(3)另外还有,Function.constructor === Function ,Obect.constructor === Function这些,这样来看的话Object又是Function的一个实例。