例如:
function obj(val) {
this.val = val;
}
obj.prototype.newfunction = function(){
return this.val;
};
完全不同于此?
function obj(val) {
this.val = val;
this.newfunction = function(){
return this.val;
}
}
我意识到prototype
的原因是你可以为你没有创建的对象添加方法,但是有没有理由在第一个块上使用第二个块,反之亦然?
答案 0 :(得分:3)
使用第一种方法,你不能用第二种方法调用obj.newfunction()。
当你使用额外的功能扩展原型时(比如你的第一个例子),这个额外的功能将可用于你使用new operator从这个函数创建的所有对象。但是这个功能不会成为函数本身的一部分。当您扩展原型时,此函数中的所有现有对象将立即看到所有更改。
对于第二种情况,您正在使newfunction成为obj函数本身的属性。
我建议你阅读这篇文章,这将有助于澄清原型属性的概念 http://joost.zeekat.nl/constructors-considered-mildly-confusing.html