ただし、別のファイルの名前空間に属性を追加する場合は、まずその名前空間がすでに存在していることを確認する必要があり、同時に既存の名前空間に損傷を与えないようにする必要があります。これは、非破壊的な名前空間関数を通じて実現できます:
var KUI = KUI {};
KUI.utils = KUI.utils || {};
KUI.utils.namespace = function(ns){
var Parts = ns.split("."),
object = KUI ,
i, len;
if(parts[0] === "KUI"){
Parts = Parts.slice(1);
}
for(i = 0, len = Parts.length; i
if(!object[parts[i]]){
object[parts[ i]] = {};
}
object = object[parts[i]];
}
オブジェクトを返す;
};
使用法:
KUI.utils.namespace("KUI. common") ;
KUI.utils.namespace("KUI.common.testing");
KUI.utils.namespace("KUI.modules.function.plugins");
KUI.utils.namespace ("フォーマット");
上記を経た後の KUI の内容を見てください:
{
"utils": { },
"共通": {
"テスト": {}
},
"モジュール": {
"関数": {
"プラグイン": {}
}
},
"形式": {}
}
名前空間パターンの欠点
1. 長い文字を入力する必要があり、解析時間が長くなります。
2. 単一のグローバル変数への依存。つまり、どのコードでもグローバル インスタンスを変更でき、他のコードは変更されたサンプルを取得します。