パブリックメンバーのモジュールがあり、このように使用する場合
Module.Sub.member()
using
次に、cppやimport static
Javaのように、メンバーをローカルスコープに静的にインポートするための最良の方法(存在する場合)は何ですか?
パブリックメンバーのモジュールがあり、このように使用する場合
Module.Sub.member()
using
次に、cppやimport static
Javaのように、メンバーをローカルスコープに静的にインポートするための最良の方法(存在する場合)は何ですか?
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回だけ必要になります(パフォーマンス)、
ローカル変数を使用すると、グローバル変数を使用するよりも高速になります-ルックアップ(パフォーマンス)が速くなります。
縮小ツールはローカル変数名を安全に縮小できますが、グローバル変数を簡単に縮小することはできません。
何かのようなもの
member = Module.Sub.member;
多分?ただし、Javaで静的インポートのスコープとなる「コンパイル単位」の概念がないため、グローバルオブジェクトのプロパティが乱雑になり、一部が上書きされる可能性があるため、注意が必要です。代わりに、VMの単一の動的実行状態があるため、上記の提案は宣言型ではなく、目的を達成するための必須の方法です。
私の知る限り、宣言的に同じ目標を達成する方法はありimport static
ません。
これは私が指摘するのに十分美しいと思うアプローチです:
(function(member) {
//Your code here will see member in this scope.
}) (Module.Sub.member);
お役に立てれば。