有人问我这个问题,我有点迷失了。
由于这是Q& A,因此在这里提问是有意义的。
为什么我要将一个函数添加到对象原型而不是将其添加到对象?
答案 0 :(得分:4)
因为,如果将它添加到原型中,它将在对象的所有“实例”上可用。如果将它添加到对象本身,它将仅在该单个实例上可用。
答案 1 :(得分:3)
考虑这两个对象:
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/