네임스페이스
전역 변수와 함수를 하나의 함수로 감싸 지역변수로,
객체 안의 속성으로 만드는 것을 네임스페이스를 만든다고 표현
전역 변수와 객체, 함수들 = 지저분한 코드
var abc = 'ABC';
var aaa = 'AAA';
var m = {};
m.mm = 'mmm';
function abcFunc(){
console.log(abc, aaa, m.mm);
}
abcFunc()
객체 리터럴 패턴
하나의 전역 객체를 생성한 후 그 전역 객체 안에 구현
var obj = {
x : 'x',
y : function(){
console.log( this.x );
}
}
obj.x;
obj.y();
단점 : 수정 가능
obj.x = '바보 메롱';
방지하려면 즉시실행함수를 추가한 패턴으로
var obj = (function() {
var x = 'x';
return {
y : function(){ // 공개할 변수만 return한다.
console.log(x); // 클로저를 통해 x의 접근
}
}
}());
var s1 = obj.y();
var s2 = obj.y();
범용 네임스페이스
네임스페이스를 생성하기 전에 존재 여부 확인
전역 객체 이름은 대문자로 사용한다
if(typeof MYAPP === 'undefined'){
var MYAPP = {};
}
// or
var MYAPP = MYAPP || {};
var MYAPP = MYAPP || {};
MYAPP.abcModule = (function(){
var text = 'abc';
return {
get : function(){
console.log(text);
},
set : function(newText){
text = newText;
}
}
}());
MYAPP.abcModule.get();
MYAPP.abcModule.set('에이비씨');
'UI개발' 카테고리의 다른 글
자바스크립트 클로저 (0) | 2021.01.08 |
---|---|
자바스크립트 렉시컬스코프 (0) | 2021.01.08 |
자바스크립트 함수표현식 (0) | 2021.01.07 |
자바스크립트 - 콜백의 동기와 비동기 (0) | 2020.08.23 |
이벤트 전파를 중단하는 방법 (0) | 2020.08.23 |