(Object instanceof Function) 和 (Function instanceof Object) 怎么都是真的?

How is it that (Object instanceof Function) and (Function instanceof Object) are both true?

等等!我知道还有其他非常相似的问题,但是(也许是我)我需要回答其中的特定部分。

我知道可以说 Object.prototype 位于委托链的最顶端。但是,在 Function 存在以使其成为实例之前,Object(作为函数对象)如何存在以在其上具有原型方法?我是否应该想象一下同时创建它们的巫毒教?

Object instanceof FunctionFunction instanceof Object 都为真

好像先有鸡还是先有蛋。

(Object instanceof Function)

true因为对象构造函数实际上是一个函数。

(Function instanceof Object)

true因为Function构造函数是一个函数,所有的函数都是对象

请注意

也是如此
(Object instanceof Object)

(Function instanceof Function)

检查左侧表达式以查看右侧构造函数的原型是否在其原型链中。请注意,该检查 涉及查看左侧的 "prototype" 属性;那是无关紧要的。重要的是左侧的原型链评估为某种对象实例;对象实例的 "prototype" 属性 没有特殊含义。

因此,在上面所有看似古怪的测试中,左侧值被解释为简单的函数实例。事实上,它们是它们真正的特定功能,对结果没有任何影响。