[javascript] 접근 제어자 (private, public)의 개념

자바스크립트는 ES6에서 이전에는 지원되지 않았던 클래스와 접근 제어자에 대한 개념을 도입했습니다.

1. 접근 제어자란?

접근 제어자는 클래스 멤버에 대한 접근을 제어하는데 사용됩니다. 이는 멤버 변수나 메소드를 외부에서 직접 접근하지 못하도록 하는 기능으로, 캡슐화를 통해 객체의 상태를 보호하는 데 도움을 줍니다.

2. publicprivate

3. 예제

class Car {
  #speed; // private 속성
  
  constructor() {
    this.#speed = 0;
  }
  
  // public 메소드
  // 내부에서 private 속성에 접근하여 값을 변경
  speedUp() {
    this.#speed += 10;
  }
  
  // public 메소드
  getSpeed() {
    return this.#speed;
  }
}

let myCar = new Car();
myCar.speedUp();
console.log(myCar.getSpeed()); // 10
console.log(myCar.#speed); // 오류, private 속성 접근 불가

위의 예제에서 # 기호를 사용하여 속성이나 메소드를 private으로 지정할 수 있습니다.

위 예제에서 speedUpgetSpeed 메소드는 외부에서 호출이 가능하지만, #speed 속성은 클래스 외부에서 직접 접근이 불가능합니다.

이렇게 사용자가 의도하지 않은 속성 변경을 방지하고, 클래스 내부의 상태를 안전하게 유지할 수 있습니다.

개발자들은 이를 이용하여 코드를 보다 안정적으로 유지할 수 있습니다.

결론

접근 제어자는 객체 지향 프로그래밍에서 중요한 요소 중 하나이며, 자바스크립트에서도 이를 활용할 수 있습니다. publicprivate 키워드를 활용하여 외부에서의 접근을 제어하면, 보다 안전하고 효율적인 코드를 작성할 수 있습니다.

참고 문헌:

  1. MDN Web Docs, “Classes” - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
  2. Ecma International, “ECMAScript® 2021 Language Specification” - https://tc39.es/ecma262/#sec-private-fields-and-methods