1

プログラムを最適化しようとしています。閉鎖の基本は理解できたと思います。しかし、スコープチェーンについては混乱しています。

一般に、スコープを低くする必要があることはわかっています(変数にすばやくアクセスするため)。

次のオブジェクトがあるとします。

var my_object = (function(){

        //private variables
        var a_private = 0;

    return{ //public
             //public variables
             a_public : 1,

             //public methods
             some_public : function(){
                  debugger;
                  alert(this.a_public);
                  alert(a_private);
             };
        };
})();

私の理解では、some_publicメソッドを使用している場合、パブリック変数よりも高速にプライベート変数にアクセスできます。これは正しいです?

私の混乱は、これのスコープレベルにあります

コードがデバッガーで停止すると、firebugはthisキーワード内のパブリック変数を表示します。この単語はスコープレベル内にありません

これにアクセスする速度はどれくらいですか?現在、this.propertiesを別のローカル変数として保存して、何度もアクセスしないようにしています。

どうもありがとう!

4

2 に答える 2

4

Javascriptを最適化する良い方法はたくさんあります。

これはそれらの1つではありません。
スコープを検索するコストはわずかです。

さらに、あなたはthisキーワードを誤解しています。キーワードは、すべての関数に対する暗黙のパラメーターであり、グローバルオブジェクト、関数が呼び出されたインスタンス、またはに渡された最初のパラメーターのいずれか
になります。 オブジェクトは通常のJavascriptオブジェクトを参照します。そのプロパティにはスコープがありません。thiswindowcallapply
this

于 2010-03-09T03:50:18.290 に答える
2

まず、アプリケーションのプロファイルを作成しましたか。このコードがボトルネックであることを知っていますか?

アプリケーションがその時間の99.9%を他のことに費やしている場合、これを最適化する意味はありません。

于 2010-03-09T03:50:27.633 に答える