(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 Function
和 Function instanceof Object
都为真
好像先有鸡还是先有蛋。
(Object instanceof Function)
是true
因为对象构造函数实际上是一个函数。
(Function instanceof Object)
是true
因为Function构造函数是一个函数,所有的函数都是对象
请注意
也是如此
(Object instanceof Object)
和
(Function instanceof Function)
检查左侧表达式以查看右侧构造函数的原型是否在其原型链中。请注意,该检查 不 涉及查看左侧的 "prototype" 属性;那是无关紧要的。重要的是左侧的原型链评估为某种对象实例;对象实例的 "prototype" 属性 没有特殊含义。
因此,在上面所有看似古怪的测试中,左侧值被解释为简单的函数实例。事实上,它们是它们真正的特定功能,对结果没有任何影响。
等等!我知道还有其他非常相似的问题,但是(也许是我)我需要回答其中的特定部分。
我知道可以说 Object.prototype 位于委托链的最顶端。但是,在 Function 存在以使其成为实例之前,Object(作为函数对象)如何存在以在其上具有原型方法?我是否应该想象一下同时创建它们的巫毒教?
Object instanceof Function
和 Function instanceof Object
都为真
好像先有鸡还是先有蛋。
(Object instanceof Function)
是true
因为对象构造函数实际上是一个函数。
(Function instanceof Object)
是true
因为Function构造函数是一个函数,所有的函数都是对象
请注意
也是如此(Object instanceof Object)
和
(Function instanceof Function)
检查左侧表达式以查看右侧构造函数的原型是否在其原型链中。请注意,该检查 不 涉及查看左侧的 "prototype" 属性;那是无关紧要的。重要的是左侧的原型链评估为某种对象实例;对象实例的 "prototype" 属性 没有特殊含义。
因此,在上面所有看似古怪的测试中,左侧值被解释为简单的函数实例。事实上,它们是它们真正的特定功能,对结果没有任何影响。