모듈패턴 Ⅱ
Javascript 2012. 1. 29. 12:14
이전 포스트에서 설명드렸던 모듈패턴에 대해 이번 포스트에서는 좀더 다향한 패턴으로 작성해 보도록 하겠습니다.
-
// 객체 리터널을 사용하여 작성하는 패턴입니다.
-
var constructor_fn = (function(doc, win){
-
// 객체 리터널 형식을 사용하는 작성법
-
-
var x = 0
-
, y = 0;
-
-
return {
-
getX: function(){
-
return x;
-
},
-
getXfn: function(){
-
return this.getX;
-
}
-
};
-
-
})(document, window);
-
-
// 외부에 노출된 getX 메소드를 변경시키면 메소드 원본이 변경되었으므로 더이상 사용할수 없게 되었습니다.
-
constructor_fn.getX = null;
-
alert(constructor_fn.getXfn()); // null
-
-
-
-
-
// 이번 패턴은 따로 비공개 메서드를 두어 공개할 메서드만 골라서 노출시키는 패턴입니다.
-
var constructor_fn = (function(doc, win){
-
// 객체 리터널 형식을 사용하는 작성법
-
-
var x = 0
-
, y = 0;
-
-
// 비공개 메서드
-
function getX(){
-
return x;
-
};
-
-
function getY(){
-
return y;
-
};
-
-
function setX(x){
-
x = x;
-
};
-
-
function setY(y){
-
y = y;
-
};
-
-
-
return {
-
getX: getX,
-
getX1: getX,
-
getY: getY
-
};
-
-
})(document, window);
-
-
-
constructor_fn.getX = null;
-
// 이전처럼 외부에 노출된 getX 메서드를 변경 하여도 메서드 원본이 비공개 함수로 정의되어 있으므로
-
// getX 메소드는 공개된 메서드인 getX1를 호출하여도 잘 돌아가게 되는 것입니다.
-
alert(constructor_fn.getX); // null
-
alert(constructor_fn.getX1); // function(){ ; }