使用原型而不是在构造函数中创建函数的优势?

时间:2012-04-20 16:53:46

标签: javascript

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

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

我发现开发人员可以通过

将实例方法添加到Animal类
Animal.prototype.makeSound = function() { alert(this.sound); };

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

3 个答案:

答案 0 :(得分:8)

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

这更像是一个内存管理的东西。从功能上讲,它几乎完全相同。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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