它是如何(Object instanceof Function)和(Function instanceof Object)都是真的?

时间:2015-09-03 15:19:30

标签: javascript prototype

等待!我知道还有其他非常类似的问题,但是(或许是我)我需要回答一个特定部分。

我知道可以说Object.prototype位于委托链的最顶层。但是,在函数存在之前,如何将Object(作为函数对象)存在以使其具有原型方法以使其成为实例?我应该想象一下他们同时创造的伏都教吗?

Object instanceof FunctionFunction instanceof Object都是真的

似乎是鸡肉和鸡蛋。

1 个答案:

答案 0 :(得分:5)

StringBuilder

(Object instanceof Function) ,因为Object构造函数实际上是一个函数。

true

(Function instanceof Object) ,因为Function构造函数是一个函数,所有函数都是对象。

请注意,

也是如此
true

(Object instanceof Object)

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

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