Javascript Function.prototype.propertyname===Object.propertyname是否为true?

Javascript Function.prototype.propertyname===Object.propertyname是否为true?,javascript,Javascript,为了更好地理解javascript背后的原型,我偶然发现了以下内容,到目前为止我还无法理解 我知道函数是一类对象,但我不明白为什么在Function.prototype上设置属性后对象会获得这个属性 Function.prototype.foo = 'bar'; Object.foo // Object now has this property and returns 'bar' Object.foo === Function.prototype.foo // returns true

为了更好地理解javascript背后的原型,我偶然发现了以下内容,到目前为止我还无法理解

我知道函数是一类对象,但我不明白为什么在Function.prototype上设置属性后对象会获得这个属性

Function.prototype.foo = 'bar';

Object.foo // Object now has this property and returns 'bar'

Object.foo === Function.prototype.foo // returns true

如果我没有弄错的话,Function.prototype是所有继承对象的原型。因为您设置了
Function.prototype.foo='bar'所有对象都继承
foo
属性。这就是为什么第三行代码返回true。

Object
是一个函数,
typeof Object==“function”
是true。因此,您为
Function.prototype
分配了一个属性,它将使
对象
也具有该属性。(在属性链中。)

这是因为
对象
函数
对象共享相同的内部
[[Prototype]]
属性

正如Ecma-262所说:

函数原型对象的内部[[Prototype]]属性的值是对象原型对象

因此,如果将任何属性添加到
函数的原型中,该属性也可以通过
对象
对象访问,反之亦然

如果你想深入了解它,我建议你看看


希望能有帮助。

在这里,我以为物体就是物体。这就把它清理干净了,谢谢@ChrisM:
对象
是一个对象<代码>对象的对象实例;//正确
但更具体地说,它是一个
函数
对象<代码>函数的对象实例;//正确
。在JavaScript中,函数是对象,这是不对的<代码>功能。原型是所有
功能
对象的原型,而不是所有对象的原型。只有函数将继承
foo
属性。以下引用可能会有所帮助:,