ConstructorFunc.property vs ConstructorFunc.prototype.proper
ConstructorFunc.property vs ConstructorFunc.prototype.property
下面的声明有什么区别吗?
声明1 :
someName.test1 = function() {alert("test1")}
声明2 :
someName.protoype.test2 = function() {alert("test2")}
Javascript中类属性和函数原型差异的复制
是有区别的:
someName.test1 = function() {alert("test1")}
将此函数添加到对象(或类)someName
。
someName.protoype.test2 = function() {alert("test2")}
将此函数添加到类someName
的所有实例
看一个真实的例子:
Object.getOwnPropertyNames = function(obj) { ... };
,它只是一个函数命名空间放入Object
类,将感兴趣的对象作为其第一个参数,然而如果它被写为:
Object.prototype.getOwnPropertyNames = function() { ... };
那么每个 Object
都有这个方法,它将像这样使用:
obj.getOwnPropertyNames();
[但不要这样做,因为向Object
原型添加方法是不被允许的!)
是。如果您将test2与someename对象的整个原型链相关联。它基本上就像你在这里给一个类添加一个方法它对someName的所有实例都可用。在第一种情况下,它只是被加到那个特定的物体上。
这可能一开始有点令人困惑,但如果你想要在类(someName)的所有实例中添加属性或方法,那么你将使用prototype。如果你只是想把它添加到一个对象(someName),那么你将使用第一步。