Javascript 对象属性与对象原型
已编辑 这样做的区别是什么:Javascript 对象属性与对象原型,javascript,Javascript,已编辑 这样做的区别是什么: var a = function(){}; a.myProperty = function(){}; 与: var a = function(){}; a.prototype.myProperty = function(){}; 我意识到这可能是一个愚蠢或模糊的问题,但我需要了解什么才能知道两者之间的区别,以及何时使用其中一个而不是另一个?没有区别。您可以在对象上设置属性 请注意,第二个示例失败,因为您没有将a.prototype设置为值 当然,如果你做了一个函
var a = function(){};
a.myProperty = function(){};
与:
var a = function(){};
a.prototype.myProperty = function(){};
我意识到这可能是一个愚蠢或模糊的问题,但我需要了解什么才能知道两者之间的区别,以及何时使用其中一个而不是另一个?没有区别。您可以在对象上设置属性 请注意,第二个示例失败,因为您没有将
a.prototype
设置为值
当然,如果你做了一个函数,那么默认情况下它会得到一个原型属性
而.prototype
属性有一个特殊的属性。如果调用newsomefunction
,则返回值的[[Prototype]]
为someFunction.Prototype
这仅适用于
.prototype
是函数的属性的情况。因为新的只对函数有效。请注意,这个问题自第一次提出以来就被大量编辑过,这就是为什么现有的注释和答案毫无意义的原因
所有函数都有原型。附加到这些原型的方法可用于通过将函数作为构造函数调用而创建的对象实例。因此,在第二个示例中,如果您编写var o=newa()代码>然后您将能够调用o.myProperty()代码>
此外,所有函数都是对象,因此可以直接在函数本身上设置任意属性,如第一个示例所示。您还可以使用o.constructor
(或this.constructor
从成员函数)从对象访问函数。这可以用来实现C++静态类变量的等价。对象没有<代码>。后一种代码不起作用