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()
在这两种情况下都有效。请参阅、和其他请参阅、和其他