1

誰かがJavaScript/JQueryでオブジェクトを作成するコストと単純な変数宣言を比較対照していただけませんか?

例えば:

var G = {}
G.obj = (function(){
        var x = 10; //'private' attribute, can be accessed internally only
        G.y   = 20; //'public'  property
        });

xには明らかにローカルスコープがあり、Yはセレクターを使用してGを介してパブリックにアクセスできます。後者のアプローチに関連する重要なオーバーヘッドはありますか?

ありがとう。

編集:これはばかげた質問のように聞こえるかもしれませんが、HTML5ゲームのアーキテクチャを計画しています。前進するときは、このような小さなことを念頭に置いておく必要があります。

4

1 に答える 1

2

まず、コードブロックで関数を実際に実行しているわけではありません。

G.obj = (function(){
    var x = 10; //'private' attribute, can be accessed internally only
    G.y   = 20; //'public'  property
    })();

ここで、ローカル変数とグローバルプロパティの作成コストに関する限り、AFAIKは、スコープチェーンをトラバースするときに、グローバルプロパティへのアクセス(取得/設定)のコストが少し高くなります。スコープチェーンのプロパティが高いほど、コストが高くなります。ただし、これは私見ではそれほど問題ではありません。

より大きな問題は、グローバルストアで物事を固執するというあなたの選択です。関数の実行が終了した後もローカル変数が固執しないため、ローカル変数を使用すると便利です。したがって、不要な状態をメモリに保持しないでください。このIMOは、アプリケーションの状態を維持する場所に関する設計を推進する必要があります。

于 2012-07-07T20:36:50.240 に答える