2010-06-04 8 views
2

두 번째 코드 단편에서 NS를 간단하게 선언하여 동일한 작업을 수행 할 수있는 경우 다음 예제에서 메소드를 반환하는 점은 무엇입니까?자바 스크립트 네임 스페이스에 대한 질문

1 :

var NS = function() { 
    return { 
     method_1 : function() { 
      // do stuff here 
     }, 
     method_2 : function() { 
      // do stuff here 
     } 
    }; 
}(); 

2 : 더 장점이없는 특정 예에서

var NS = { 
    method_1 : function() { do stuff }, 
    method_2 : function() { do stuff } 
}; 

답변

11

. 하지만 당신은 몇 가지 변수를 숨기려면 첫 번째 버전을 사용할 수 있습니다

var NS = function() { 
    var private = 0; 
    return { 
     method_1 : function() { 
      // do stuff here 
      private += 1; 
     }, 
     method_2 : function() { 
      // do stuff here 
      return private; 
     } 
    }; 
}(); 

이것은 더글라스 크록 포드의에서 모듈이라 "자바 스크립트 : 좋은 부품". 웹을 검색하면 자세한 설명을 찾을 수 있습니다.

기본적으로 자바 스크립트에서 새로운 변수 범위를 만드는 유일한 함수는 함수이므로 대부분의 전역 저감은 객체의 속성 (이 경우 NS)을 사용하거나 함수를 사용하여 변수 범위 (개인 이 예제에서는 var).

관련 문제