Javascript 原型设计与直接命名函数不同吗?
例如:Javascript 原型设计与直接命名函数不同吗?,javascript,Javascript,例如: 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的原因是,您可以向
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
的原因是,您可以向未创建的对象添加方法,但是有没有理由在第一个块上使用第二个块,或者反之亦然?对于第一种方法,您不能调用obj.newfunction(),而对于第二种方法,您可以调用
当您使用额外功能扩展原型时(如第一个示例中),此额外功能将可用于使用新运算符从此函数创建的所有对象。但此功能不会成为函数本身的一部分。扩展原型时,此函数中的所有现有对象将立即看到所有更改
对于第二种情况,您正在使newfunction成为obj函数本身的一个属性
我建议你阅读这篇文章,它将有助于澄清原型属性的概念
第一种方法不能调用obj.newfunction(),第二种方法可以调用 当您使用额外功能扩展原型时(如第一个示例中),此额外功能将可用于使用新运算符从此函数创建的所有对象。但此功能不会成为函数本身的一部分。扩展原型时,此函数中的所有现有对象将立即看到所有更改 对于第二种情况,您正在使newfunction成为obj函数本身的一个属性 我建议你阅读这篇文章,它将有助于澄清原型属性的概念
具体来说,
new obj().newfunction()
在这两种情况下都有效。具体来说,new obj().newfunction()
在这两种情况下都有效。请参阅、和其他请参阅、和其他