Programming/JS

[Javascript] 정보 은닉

w00se 2022. 2. 20. 22:07

정보 은닉을 하는 이유

모던 Javascript Deep Dive에 의하면 정보 은닉은 아래와 같은 효과가 있다.

정보 은닉은 외부에 공개할 필요가 없는 구현의 일부를 외부에 공개되지 않도록 감추어 적절치 못한 접근으로부터 객체의 상태가 변경되는 것을 방지해 정보를 보호하고, 객체 간의 상호 의존성, 즉 결합도를 낮추는 효과가 있다. - 모던 Javascript Deep Dive 24장 중

 

간단히 정리를 하면 아래와 같습니다.

  • 객체의 상태를 안정적으로 관리(예상하지 못한 변화를 예방)
  • 객체 간의 결합도를 낮춤

 

Javascript에서 정보 은닉을 하는 방법

javascript에서는 # 접두사를 이용해서 클래스에 private 속성을 만들 수 있습니다.

과제를 수행하면서 정보 은닉을 연습했던 예시 코드는 아래와 같습니다.

class Car {
  // private 멤버 변수는 클래스 필드에 정의
  // 클래스 필드에 정의하지 않고 constructor에서 정의를 하면 SyntaxError가 발생
  #name = '';

  #distance = 0;

  constructor(name) {
    this.#name = name;
  }

  getName() {
    return this.#name; // private 멤버 변수는 클래스 내부에서 접근 가능
  }

  getDistance() {
    return this.#distance;
  }
  
  // private 메서드도 선언 가능
  #testFunc() {
    console.log('this is test func);
  }
}

export default Car;

 

 


참고 자료

우아한테크코스 프론트엔드 JS 레벨1 - 2020의 자동차 경주 - 테스트 1단계 피드백

TOAST UI - 은닉화 향한 자바스크립트의 여정

모던 Javascript Deep Dive - 이웅모 저

 

읽어 주셔서 감사합니다 :)

잘못된 부분이 있다면 댓글로 편히 알려주세요!