Namespacing Pattern

객체를 생성하는 패턴들로 Name space를 사용하게 되면 필요로 하는 전역 변수의 개수를 줄일 수 있습니다.

객체 리터럴 네임스페이싱(Object Literal Namespacing)

가장 기본적인 네임스페이스 패턴으로 하나의 전역 객체를 선언 후 함수, 객체, 변수를 여기에 추가하는 방식입니다.

단, namespace를 사용하고 있는 객체는 this를 사용해서 참조하면 안된다.

var APP = {};
 
APP.function1 = function() {
  console.log('function1');
}
APP.function2 = function() {
  console.log('function2');
}
 
// 변수를 추가하는 경우
APP.variable = 1;
 
// 객체 컨테이너를 추가하는 경우
APP.modules = {};
APP.modules.module1 = {};
APP.modules.module1.data = 1;

범용 네임스페이스 함수

이 방식은 재정의를 막기 위해 미리 선언되었는지 확인하고 정의해주는 함수를 말합니다.

APP.namespace = function(string) {
  // 단일 var 패턴으로 변수들 선언
  // string 문자열을 '.' 를 기준으로 분리
  var parts = ns_string.split('.'),
  parent = APP,
  i;
 
  if(parts[0] === "APP") {
    //parts 배열에서 parts[0] 원소를 삭제
    parts = parts.slice(1);
  }
  for(i=0 ; i<parts.length ; i++) {
    // 중복되지 않으면 생성
    if(typeof parent[parts[i]] == "undefined") {
      parent[parts[i]] = {};
    }
    parent = parent[parts[i]];
  }
  return parent;
}


'Language > Javascript' 카테고리의 다른 글

다중 플래그값을 위한 비트 연산  (0) 2017.12.30
promise - 2 [Promise 사용 시 주의할 것]  (0) 2017.07.28
promise - 1 [then, catch, resolve, reject]  (0) 2017.07.28
closure  (0) 2017.07.28
scope - 3 [변수 숨기기]  (0) 2017.07.28

+ Recent posts