3

したがって、特に複数のサードパーティの参照がある場合は、ウィンドウを参照するグローバル名前空間を汚染することは悪いことです。したがって、これは望ましくありません。

window.someObject = someObject;

それはどこでもそれを参照します。代わりにこのように使用するとどうなりますか?

var MyApplication = window.MyApplication;
MyApplication.someObject = someObject;

もちろん、このアプローチを使用するMyApplication = window.MyApplicationには、この作成された名前空間にアクセスする必要がある各モジュールの先頭で参照する必要があります。それでは私の質問に戻ります。これは、ウィンドウのグローバル名前空間を汚染することなくグローバル アクセスを許可するための受け入れ可能なアプローチですか?

4

2 に答える 2

1

グローバルアクセスが必要な場合は、何らかのグローバルが必要です。これが一般的な方法です。

jQuery ソース コードの例:

_jQuery = window.jQuery,
_$ = window.$,

私は、すべての大きなフレームワークがこのようにしていると信じています。グローバル名前空間を 1 つのコンテナー変数で汚染することはまったく問題ないと考えています。

于 2013-07-25T01:40:00.460 に答える
0

次のこともできます (グローバル コンテキストで):

(function(lib) {

  // in here, lib references window.MyApplication
  ...

}(MyApplication));

そのため、渡されたオブジェクトを簡単に変更できます。

于 2013-07-25T02:22:51.047 に答える