Javascript Function.prototype.propertyname===Object.propertyname是否为true?
为了更好地理解javascript背后的原型,我偶然发现了以下内容,到目前为止我还无法理解 我知道函数是一类对象,但我不明白为什么在Function.prototype上设置属性后对象会获得这个属性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
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
属性。以下引用可能会有所帮助:,