단, 서로 다른 파일의 네임스페이스에 속성을 추가할 때는 먼저 해당 네임스페이스가 이미 존재하는지 확인해야 하며, 동시에 기존 네임스페이스에 손상을 주지 않아야 합니다. 이는 비파괴적인 네임스페이스 기능을 통해 달성할 수 있습니다.
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]];
}
return object;
};
사용법:
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. 단일 전역 변수에 대한 종속성, 즉 모든 코드는 전역 인스턴스를 수정할 수 있으며 다른 코드는 수정된 예제를 가져옵니다.