[javascript] 클로저를 사용한 모듈 패턴
자바스크립트에서 모듈은 전역 스코프를 오염시키지 않고 변수와 함수를 캡슐화하여 재사용 가능한 코드를 만들 수 있도록 돕는다. 모듈 패턴은 클로저를 활용하여 이러한 캡슐화를 구현하는 데 유용하다.
클로저란?
클로저는 함수와 함수가 선언된 렉시컬 환경(Lexical Environment)의 조합이다. 함수가 정의될 때의 스코프에서 식별자를 기억하고, 함수가 호출될 때 이를 바탕으로 동작한다. 이를 통해 함수는 자신이 선언된 스코프 외부에 있는 변수와 함수에 접근할 수 있게 된다.
클로저를 활용한 모듈 패턴
아래는 클로저를 사용하여 모듈 패턴을 구현한 간단한 예제이다.
// 모듈 생성
var myModule = (function() {
var privateVariable = 'I am private';
function privateMethod() {
console.log('This is a private method');
}
return {
publicMethod: function() {
console.log('This is a public method');
privateMethod();
},
publicVariable: 'I am public'
};
})();
// 모듈 사용
myModule.publicMethod(); // 출력: This is a public method This is a private method
console.log(myModule.publicVariable); // 출력: I am public
console.log(myModule.privateVariable); // 출력: undefined (접근 불가)
myModule.privateMethod(); // 에러 발생 (접근 불가)
위 예제에서 myModule
은 클로저 안에서 정의된 함수로, 외부에서 접근할 수 있는 공개(public) 메서드와 변수만을 노출하고 있다.
클로저를 통해 privateVariable
과 privateMethod
를 은닉하고, publicMethod
와 publicVariable
을 통해 외부로 노출함으로써 모듈화된 코드를 구현할 수 있다.
결론
클로저를 활용한 모듈 패턴은 전역 스코프를 오염시키지 않고 코드를 캡슐화하여 모듈화할 수 있는 강력한 방법이다. 이 패턴을 사용하면 코드의 유지보수성을 높이고 재사용성을 높일 수 있다.
참고 자료:
위 내용은 클로저를 사용한 모듈 패턴의 이해를 돕기위한 것이며, 실제 구현에 따라 상이할 수 있습니다.