2

有人问我这个问题,我有点迷茫。

由于这是一个问答,所以在这里提问是有意义的。

为什么我要将函数添加到对象原型而不是将其添加到对象?

4

2 回答 2

4

因为,如果将它添加到原型中,它将在对象的所有“实例”上可用。如果您将它添加到对象本身,它将仅在该单个实例上可用。

于 2012-09-04T13:51:59.703 回答
3

考虑这两个对象:

对象 1

var myObject1 = function() {
    this.myProperty = true;
    this.myMethod = function() {
        return this.myProperty;
    };
}

对象 2

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/

于 2012-09-04T13:58:18.417 回答