[JavaScript] namespace

2025. 11. 3. 17:34JavaScript

728x90

이 글에서는 JavaScript의 Namespace에 대한 개요와 구현 방식과 은닉 방안을 정리한 글 입니다.

  • Namespace
  • 구현 방법
  • 모듈 패턴과 IIFE을 활용한 네임스페이스 은닉

Namespace

식별자(변수/함수 명 등)가 충돌하지 않도록 그룹화 하는 방법

식별자가 중복될 경우 추가적인 식별자가 필요하며, 네임스페이스는 식별자들을 그룹화해 문제를 해결할 수 있습니다. 관련된 기능과 데이터를 그룹화 할 수 있으며, 유지보수성을 향상시킬 수 있습니다.


구현 방법

JS에는 C++의 namepsace와 같은 키워드가 없으며, 주로 객체를 이용해 네임스페이스를 구현합니다.

엔티티를 전체를 포함하는 객체를 선언함으로써, 네임스페이스 처럼 사용할 수 있습니다.

const 네임스페이스명 = {
  전역데이터: 값,
  메서드명: (매개변수) => {
    this.전역데이터;
  }
}

네임스페이스명.메서드명();
네임스페이스명.전역데이터;

모듈 패턴과 IIFE을 활용한 네임스페이스 은닉

관련된 변수와 함수를 하나의 모듈로 묶어, 외부에 공개할 요소만 명시적으로 반환하는 모듈 패턴(Module Pattern)과 IIFE로 namespace에 대한 은닉성을 구현할 수 있습니다.

[ IIFE (Immediately Invoked Function Expression) ]

함수 정의와 동시에 실행이 가능한 함수

(function() { ... })();

다음과 같이 IIFE에 에서 은닉 데이터를 반환하지 않고, 메서드만 반환함으로써 네임스페이스 외부에서는 오직 메서드를 통해서만 은닉데이터에 접근할 수 있습니다.

const 네임스페이스명 = ( () => {
  const 은닉데이터: 값,
  return {
    메서드명: (매개변수) => {
		  return 은닉데이터;
		}
  };
})();

네임스페이스명.메서드명();
네임스페이스명.전역데이터; // 접근 불가능
728x90

'JavaScript' 카테고리의 다른 글

[JavaScript] 블로킹 논블로킹, 동기 비동기  (0) 2025.11.06
[JavaScript] First-Class Function  (0) 2025.11.05
[JavaScript] Pure Function  (0) 2025.11.05
[JavaScript] Function  (0) 2025.11.05
[JavaScript] 객체  (0) 2025.11.03