namespace(네임스페이스)
1. 정의
- A namespace is a container which allows developers to bundle up functionality under a unique, application-specific name. In JavaScript a namespace is just another object containing methods, properties, and objects.
- 구분 가능한 영역
- 자바의 package 와 같다
- 자바스크립트에서는 namespace 와같은 기능을 제공하지 않는다. 그렇기 때문에 object를 이용하여 namespace를 만든다
2. 사용
1) namespace(네임스페이스)의 필요성
- 실행결과 : 3
- 의도 하지 않게 a의 변수에 함수가 담기면서 값이 3으로 변했다
- 전역 변수를 무분별 하게 사용 함으로서 변수 명과 함수명 혹은 변수명 사이에 중복이 발생한다
- 이걸 방지 하고자 namespace를 사용한다
2) namespace 사용법
- 전역 객체 선언
- 1, 2 번의 결과는 동일하게 myApp 이라는 object를 생성한다
- 위와 같이 선언함으로서 namespace 선언의 중복을 방지 할 수 있다
- sub_namespace
- 자바스크립트의 특성을 이용하여 sub_namespace 도 가능하다
- 자바의 package안에 폴더를 구성하는 것과 같다
- 구현
- 실행결과 : kyle, BMW, 02
- 문제점: 객체생성( sub_namespace)하고 오브젝트를 채워 넣을 때마다 위에 먼저 선언해야 한다는 문제가 있다. 이는 소스 코드를 어지럽힐 수 있다
3) 지저분한 namespace 선언 해결
- 함수를 이용하여 먼저 namespace, subnamespace 를 선언한다
- 위와 같은 방법을 통해 위에서 발생한 지저분한 코드 문제점을 해결 할 수 있다
- nameFun('master_namespace.subnamespace.subnamespace.subnamespace.....')
3. 네임스페이스의 문제점
- 소스코드량 증가
- 전역 인스턴스가 바뀐다면 소스 코드 모두 수정
- 이름을 따라 가기 때문에 성능이 느리다
'Javascript > Core' 카테고리의 다른 글
[Javascript] 자바스크립트 실행문맥 (Execution context) (0) | 2016.12.15 |
---|---|
[Javascript] 자바스크립트 기본 함수 정의 (0) | 2016.12.14 |
[Javascript] 자바스크립트 false/true로 간주되는 값과 단축연산 (0) | 2016.12.13 |
[Javascript] 자바스크립트 소수점 계산, 소수점 자릿 수 구하기 (6) | 2016.12.13 |
[Javascript] 데이터형 쉽게 변환하기 (0) | 2016.12.13 |