[javascript] 클로저를 사용하여 접근 권한 제한하기

자바스크립트에서 클로저를 사용하면 함수 내부의 변수와 메서드를 외부에서 직접 접근하지 못하도록 제한할 수 있습니다. 이를 통해 정보 은폐(Information Hiding)와 캡슐화(Encapsulation)를 구현할 수 있습니다.

클로저(Closure)란?

클로저란 함수가 정의될 당시의 환경과 함께 그 함수 자신을 기억하는 특성을 말합니다. 다시 말해, 클로저는 해당 함수가 선언된 렉시컬 환경(Lexical Environment)과 함께 해당 함수를 기억하는 것을 의미합니다.

클로저를 사용한 접근 권한 제한

다음은 클로저를 사용하여 접근 권한을 제한하는 예제 코드입니다.

function createCounter() {
  let count = 0;
  
  function changeBy(val) {
    count += val;
  }

  return {
    increment: function() {
      changeBy(1);
    },

    decrement: function() {
      changeBy(-1);
    },

    getCount: function() {
      return count;
    }
  };
}

let counter = createCounter();
console.log(counter.getCount()); // 0
counter.increment();
counter.increment();
console.log(counter.getCount()); // 2

위 예제에서 count 변수는 createCounter 함수 내부에 선언되어 있으며, 외부에서 직접 접근할 수 없습니다. 대신에 increment, decrement, getCount와 같은 메서드를 통해 간접적으로 상태를 변경하고 조회할 수 있습니다.

결론

클로저를 사용하여 함수 내부의 변수와 메서드를 외부에서 보호함으로써, 정보 은폐와 캡슐화를 구현할 수 있습니다. 이를 통해 안전하고 예측 가능한 코드를 작성할 수 있습니다.

더 자세한 내용은 MDN web docs에서 확인할 수 있습니다.