有人问我这个问题,我有点迷茫。
由于这是一个问答,所以在这里提问是有意义的。
为什么我要将函数添加到对象原型而不是将其添加到对象?
因为,如果将它添加到原型中,它将在对象的所有“实例”上可用。如果您将它添加到对象本身,它将仅在该单个实例上可用。
考虑这两个对象:
var myObject1 = function() {
this.myProperty = true;
this.myMethod = function() {
return this.myProperty;
};
}
var myObject2 = function() {
this.myProperty = true;
}
myObject2.prototype.myMethod = function() {
return this.myProperty;
};
每次我们这样做:
var test = new myObject1();
myObject1.myMethod 也被创建。当我们这样做时:
var test = new myObject2();
myObject2.myMethod 没有需要再次创建的开销,因为它已添加到原型链中。
这对于少数情况无关紧要,但在游戏中,例如,可能有数百个实例,这可能会对性能造成很大影响。
这篇 net.tutsplus 文章可能比我解释得更好http://net.tutsplus.com/tutorials/javascript-ajax/prototypes-in-javascript-what-you-need-to-know/