可能重复:
使用原型与直接在构造函数中定义方法的优势?
我试图掌握 JavaScript 中的原型属性,但我遇到了麻烦。
我遵循了一个教程,其中指出:
“所以所有对象都会自动共享 sayHello() 方法/函数,我们必须将它分配给 protoype 属性”。
现在提到的原始代码是:
function Pet(name, species, hello)
{
this.name = name;
this.species = species;
this.hello = hello;
this.sayHello = function()
{
alert(this.hello);
}
}
修改后的使用原型属性:
function Pet(name, species, hello)
{
this.name = name;
this.species = species;
this.hello = hello;
}
Pet.prototype.sayHello = function()
{
alert(this.hello);
}
这里有什么区别,因为这两种方法都会产生相同的结果(据我所知)。例如,以下代码在与上述任一组合时的行为相同:
var rufus = new Pet("Rufus", "cat", "miaow");
rufus.sayHello();
在这两种情况下,都会发出“miaow”警报。
那么有人可以向我解释一下区别以及为什么您会选择其中一个吗?