2

这是一个动物对象的构造函数。

function Animal(name, sound) {
   this.name = name;
   this.sound = sound;
   this.makeSound = function() {
       alert(sound);
   }
}

我发现开发人员可以通过向 Animal 类添加实例方法

Animal.prototype.makeSound = function() { alert(this.sound); };

并从构造函数中排除 makeSound 方法。使用这种原型设计模式有什么好处?

4

3 回答 3

8

原型版本应该只创建一次并存储在内存中,而构造函数版本将在内存中创建一个新函数并将其与对象一起存储。

这更像是一个内存管理的事情。在功能上,它几乎相同。

于 2012-04-20T16:58:50.660 回答
2

对象实例的原型“存在”。当您创建其中一个对象时,该数据被优化为已经存在,而不是每次实例化时都更改该对象。......以及Tejs刚刚所说的。

于 2012-04-20T16:59:48.490 回答
1

此外,您可以公开访问Animal.prototype.makeSound可能有用的原始方法 ( )。

于 2012-09-22T14:36:34.740 回答