본문 바로가기

UI개발

네임스페이스

 

네임스페이스

전역 변수와 함수를 하나의 함수로 감싸 지역변수로,

객체 안의 속성으로 만드는 것을 네임스페이스를 만든다고 표현

 

전역 변수와 객체, 함수들 = 지저분한 코드 

 

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('에이비씨');