5

パブリックメンバーのモジュールがあり、このように使用する場合

Module.Sub.member()

using次に、cppやimport staticJavaのように、メンバーをローカルスコープに静的にインポートするための最良の方法(存在する場合)は何ですか?

4

3 に答える 3

13
var App = (function(app) {

    /* Dependencies */
    var Sound = app.Modules.Sound,        
        Input = app.Modules.IO.Input,
        ...

    /* Actual code using dependecies */
    ...    


})(App || {});

このソリューションにはいくつかの利点があります。

  • モジュールの上部に記載されており、一見するとはっきりと見えます(保守可能なコード)、

  • インポートの通常の利点:入力の減少、名前空間の衝突の回避など(保守可能なコード

  • 長いプロパティパスのルックアップ(a.b.c.d)は1回だけ必要になります(パフォーマンス)、

  • ローカル変数を使用すると、グローバル変数を使用するよりも高速になります-ルックアップ(パフォーマンス)が速くなります。

  • 縮小ツールローカル変数名を安全に縮小できますが、グローバル変数を簡単に縮小することはできません。

于 2013-02-21T09:25:25.330 に答える
2

何かのようなもの

member = Module.Sub.member;

多分?ただし、Javaで静的インポートのスコープとなる「コンパイル単位」の概念がないため、グローバルオブジェクトのプロパティが乱雑になり、一部が上書きされる可能性があるため、注意が必要です。代わりに、VMの単一の動的実行状態があるため、上記の提案は宣言型ではなく、目的を達成するための必須の方法です。

私の知る限り、宣言的に同じ目標を達成する方法はありimport staticません。

于 2013-02-21T08:10:23.710 に答える
2

これは私が指摘するのに十分美しいと思うアプローチです:

(function(member) {
    //Your code here will see member in this scope.
}) (Module.Sub.member);

お役に立てれば。

于 2013-02-21T08:17:40.517 に答える