2

これを使って

var Class1 = function() {       
        this.test1 = function() {
        };
    };

そして次の

function Class1() { 
};

Class1.prototype.test1 = function() {

};

その2つに違いはありますか?

4

4 に答える 4

3

最初のものは、クラス インスタンスごとに関数の個別のコピーを作成します。
また、関数がコンストラクターからクロージャ変数を使用できるようにします。

于 2012-06-04T14:25:58.223 に答える
0

後者を効率的に使用します。

JavaScript の関数はオブジェクトです。JavaScript のすべてのオブジェクトは、オブジェクトのプロトタイプと呼ばれる別のオブジェクトへの参照である、隠れた状態を保持しています。

プロトタイプを使用すると、複数のオブジェクトが同じプロトタイプ オブジェクトへの参照を維持できます。

これは、js のプロトタイプがどのように機能するかを知るための優れたリファレンスです。

于 2012-06-04T14:46:47.420 に答える
0

パフォーマンスにも影響する違いがあります。

最初のものは作成されたクラスの各インスタンスに関数を追加しますが、後者はそうしません。prototype後者のメソッドの場合、JavaScript はオブジェクトのチェーンを調べ、必要なメソッドを返しtest1ます。

于 2012-06-04T14:26:42.130 に答える
0

はい、あります。見る

2 つの (独立した) 違いについて。

于 2012-06-04T14:30:16.490 に答える