노출모듈 패턴, Revealing Module Pattern
노출모듈 패턴이란?
노출모듈 패턴은 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴
- 자바스크립트는 private나 public 같은 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행된다. 그렇기 때문에 노출모듈 패턴을 통해 private나 public 접근 제어자를 구현하기도 한다.
노출모듈 패턴의 장단점
장점
- 개발자에게 깔끔한 접근 방법을 제공
- private 데이터 제공
- 전역 변수를 덜 더럽힘
- 클로저를 통해 함수와 변수를 지역화
- 스크립트 문법이 더 일관성 있음
- 명시적으로 public 메소드와 변수를 제공해 명시성을 높임
단점
- private 메소드 접근할 방법이 없음
- private 메소드에 대해 함수 확장하는 데에 어려움이 있음
- private 메소드를 참조하는 public 메소드를 수정하기 어려움
용어 정리
- public : 클래스에 정의된 함수에서 접근 가능하며 자식 클래스와 외부 클래스에서 접근 가능한 범위
- protected : 클래스에 정의된 함수에서 접근 가능, 자식 클래스에서 접근 가능하지만 외부 클래스에서 접근 불가능한 범위
- private : 클래스에 정의 함수에서 접근 가능하지만 자식 클래스와 외부 클래스에서 접근 불가능한 범위
- 즉시 실행 함수 : 함수를 정의하자마자 바로 호출되는 함수. 초기화 코드, 라이브러리 내 전역 변수의 충돌 방지 등에 사용한다.
예제 코드
const pukuba = (() => {
const a = 1
const b = () => 2
const public = {
c : 2,
d : () => 3
}
return public
})()
console.log(pukuba)
console.log(pukuba.a)
a 와 b 는 다른 모듈에서 사용할 수 없는 변수나 함수이며, private 범위를 갖는다
c 와 d 는 다른 모듈에서 사용할 수 있는 변수나 함수이며, public 범위를 갖는다.
참고 자료