等待!我知道还有其他非常类似的问题,但是(或许是我)我需要回答一个特定部分。
我知道可以说Object.prototype位于委托链的最顶层。但是,在函数存在之前,如何将Object(作为函数对象)存在以使其具有原型方法以使其成为实例?我应该想象一下他们同时创造的伏都教吗?
Object instanceof Function
和Function instanceof Object
都是真的
似乎是鸡肉和鸡蛋。
答案 0 :(得分:5)
StringBuilder
是(Object instanceof Function)
,因为Object构造函数实际上是一个函数。
true
是(Function instanceof Object)
,因为Function构造函数是一个函数,所有函数都是对象。
请注意,
也是如此true
和
(Object instanceof Object)
检查左侧表达式以查看右侧构造函数的原型是否在其原型链中。请注意,该检查确实不涉及查看左侧的“原型”属性;这是无关紧要的。重要的是左侧的原型链被评估为某种对象的实例;对象实例的“prototype”属性没有特别的意义。
因此,在上面所有看似古怪的测试中,左侧值被解释为简单的函数实例。事实上,他们是他们真正的特定功能,对结果没有任何影响。