不正なコード
// BEFORE:5つのグローバル // 警告:アンチパターン //のコンストラクタ 関数親(){} 関数子供(){} // 変数 VARの some_var = 1 。 // いくつかのオブジェクトの VARのモジュール1 = {}; module1.data = {1、B:2 }。 VaRのモジュール2 = {};
良いコード
// AFTER:1グローバル // グローバルオブジェクト VARの MYAPP = {}; // コンストラクタ MYAPP.Parent = 関数(){}。 MYAPP.Child = 関数(){}。 // 変数 MYAPP.some_var = 1 。 // オブジェクトコンテナが MYAPP.modules = {}; // ネストされたオブジェクト MYAPP.modules.module1 = {}; MYAPP.modules.module1.data = {1、B:2 }。 MYAPP.modules.module2 = {};
あなたが名前空間に追加しているプロパティの一部は、すでに存在していてもよい、とあなたはそれらを上書きすることができます。
したがって、プロパティを追加または名前空間を作成する前に、それがまだ存在していないことを最初にチェックするのが最善です
// 危険 するvar MYAPP = {}; // より良い 場合(typeof演算 MYAPP === "未定義" ){ VARの MYAPP = {}; } // または短く するvar MYAPP = MYAPP || {};
ます。https://www.cnblogs.com/davidgu/p/3333129.htmlで再現