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

Why would I add a function to an objects prototype rather than add it to the object?

本文关键字:添加 对象 我要 为什么 原型 函数      更新时间:2023-09-26

有人问我这个问题,我有点不知所措。

由于这是一个问答;A在这里问是有道理的。

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

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

考虑这两个对象:

对象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/