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

时间:2012-09-04 13:50:12

标签: javascript

有人问我这个问题,我有点迷失了。

由于这是Q& A,因此在这里提问是有意义的。

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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/