큰 골격은 다음과 같습니다.모듈인 myModule을 통해서만 (public속성에) 접근이 가능합니다.
YAHOO.myProject.myModule = function(){}();
이 function() 안에 return을 추가한다.
YAHOO.myProject.myModule = function(){
return {
myPublicProperty: "" // public property가 된다.
myPublicMethod: function() {} // public method가 된다.
}
}();
public property/method들은 return된 hash를 통해서 접근이 가능한 public 속성이 됩니다.
※ 마지막에 ()를 사용하여 anonymous를 실행시키고, 이를 myModule을 통해서 접근하게 합니다.
여기에 function()안에 property와 method를 정의한다.
YAHOO.myProject.myModule = function(){
var privateProperty; // private property가 된다.
var privateMethod = function() {} // private method가 된다.
return {
myPublicProperty: "" // public property가 된다.
myPublicMethod: function() {} // public method가 된다.
}
}();
밖에서 봤을 때 private property/method는 접근할 수 없지만 public속성 (return되는 hash)에서는 closure를 통해서 접근이 가능하게 됩니다. private속성을 감추고 public 속성만을 접근하게 함으로서 Global variables are evil원칙을 훌륭하게 지키게 해줍니다.
Module Pattern은 privatge속성과 public 속성을 나누는것이 목적입니다.
출처 : Yahoo! User Interface Blogl의
Module Pattern