2

誰かが私にこの質問をして、私はそれに少し戸惑いました。

これは Q&A であるため、ここで質問することは理にかなっています。

関数をオブジェクトに追加するのではなく、オブジェクトのプロトタイプに追加するのはなぜですか?

4

2 に答える 2

4

プロトタイプに追加すると、オブジェクトのすべての「インスタンス」で使用できるようになるためです。オブジェクト自体に追加すると、その単一のインスタンスでのみ使用可能になります。

于 2012-09-04T13:51:59.703 に答える
3

次の 2 つのオブジェクトを検討してください。

オブジェクト 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 に答える