객체 생성 패턴
네임스페이스 패턴
비공개 프로퍼티와 메서드
비공개 멤버와 특권 멤버
모듈 패턴
다음의 패턴들 여러개를 조합.
- 네임 스페이스 패턴
- 즉시 실행 함수
- 비공개 멤버와 특권 멤버
- 의존 관계 선언
|
모듈 노출 패턴
…생성자를 생성하는 모듈
…모듈에 전역 변수 가져오기
…
샌드박스 패턴.
네임스페이스 패턴의 단점을 보완
- 전역 객체가 단 하나의 전역변수에 의존한다.
따라서 동일한 애플리케이션이나 라이브러리의 두 가지 버전을 한 페이지에서 실행시키는 것이 불가능 하다.
전역변수 명이 모두 하나이기 때문. - MYAPP.utilities.array 와 같이 점으로 연결된 긴 이름을 써야 하고 런타임에는 탐색 작업을 거쳐야 한다.
전역 생성자
네임스페이스 패턴에서는 전역 객체가 하나다. 샌드박스 패턴의 유일한 전역은 생성자다.
생성자에 콜백 함수를 전달해 해당 코드를 샌드박스 내부 환경으로 격리시킨다.
|
|
box 객체는 네임스페이스 패턴에서 MYAPP과 같은 것이다. 코드가 동작하는데 필요한 모든 라이브러리 기능이 여기에 들어간다.
패턴에 추가해 보기
- new 강제한다. new를 쓰지않아도 자동으로 처리
- Sandbox() 생성자가 선택적인 인자를 하나 이상 받을 수 있게 한다.
|
|
샌드박스 패턴을 사용하면 콜백 함수로 코드를 감싸기 때문에 전역 네임스페이스를 보호할 수 있다.
샌드박스 패턴 구현
|
|
스태틱 맴버
공개 스태틱 맴버
|
|
비공개 스태틱 맴버
- 동일한 생성자 함수로 생성된 객체들이 공유하는 멤버.
- 생성자 외부에서는 접금할 수 없다.
|
|
객체 상수 ( es6 const )
체이닝 패턴
method() 메서드
|
|