즉시 객체 초기화


전역 유효범위가 난잡해지지 않도록 보호하는 또 다른 방법은 즉시 실행 함수 패턴과 비슷한 즉시 객체 초기화 패턴이다. 이 패턴은 객체가 생성된 즉시 init() 메서드를 실행해 객체를 사용한다.

({
// 여기에 설정 값(설정상수)들을 정의할 수 있다.
maxwidth: 600,
maxheight: 400,

// 유틸리티 메서드 또한 정의할 수 있다.
gimmeMax : function(){
return this.maxwidth + "x" + this.maxheight;
},

// 초기화
fnInit: function(){
console.log(this.gimmeMax());
// 더 많은 초기화 작업
}

}).fnInit(); // 초기화 함수 실행


문법적인 면에서 이 패턴은 객체 리터럴을 사용한 일반적인 객체 생성과 똑같이 생각하면 된다. 객체 리터럴도 괄호로 감싸는데 이는 자바스크립트 엔진이 중괄호를 코드블록이 아니라 객체 리터럴로 인식하도록 지시하는 역할을 한다.

객체만 괄고로 감싸는게 아니라 객체와 init() 호출 전체를 괄호 안에 넣을 수도 있다.


({
//...
}).init();

({
//...
}.init());


이 패턴의 장점은 즉시 실행 함수 패턴의 장점과 동일하다. 단 한 번의 초기화 작업을 실행하는 동안 전역 네임스페이스를 보호할 수 있다.

+ Recent posts