[javascript] 접근 제어자 (private, public)의 활용

Javascript는 기본적으로 객체 지향 프로그래밍 언어가 아니지만, ES6부터는 클래스와 접근 제어자(private, public)를 사용할 수 있게 되었습니다. 이번 글에서는 접근 제어자의 활용에 대해 알아보겠습니다.

Private과 Public 접근 제어자

ES6에서는 클래스의 멤버 변수와 메서드에 private과 public 접근 제어자를 사용할 수 있습니다. 이를 통해 외부에서 직접적인 접근을 제어할 수 있습니다.

class Car {
  #speed; // private 멤버 변수

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

  #increaseSpeed() { // private 메서드
    this.#speed += 10;
  }

  get speed() { // public getter 메서드
    return this.#speed;
  }

  drive() { // public 메서드
    this.#increaseSpeed();
    console.log(`Driving at speed: ${this.#speed}`);
  }
}

const myCar = new Car(50);
myCar.drive(); // "Driving at speed: 60"
console.log(myCar.speed); // 60
console.log(myCar.#speed); // Error: Cannot access private member

위 예제에서 #으로 시작하는 변수와 메서드는 private으로, 클래스 외부에서 접근할 수 없습니다. 반면, get speed()drive() 메서드는 public으로 외부에서 자유롭게 호출할 수 있습니다.

활용 방안

Private 멤버 변수를 사용함으로써, 데이터의 무결성을 보호하고 외부에서의 부적절한 접근을 방지할 수 있습니다. 또한, public 메서드를 통해 private 멤버 변수에 안전하게 접근하고 조작할 수 있습니다.

이와 같은 private과 public 접근 제어자의 사용은 코드의 안정성과 가독성을 높일 뿐만 아니라, 객체 지향 프로그래밍의 핵심 개념을 충실히 따르는데에 도움을 줍니다.

마무리

접근 제어자를 통해 클래스의 멤버 변수와 메서드의 접근을 제어함으로써, 더욱 견고하고 확장 가능한 코드를 작성할 수 있습니다.

Private과 public 접근 제어자를 현명하게 활용하여 외부에서 보호해야 할 부분과 외부에 노출할 부분을 명확히 구분짓고, 안정적이고 이해하기 쉬운 코드를 구현할 수 있습니다.

ES6 classes - Mozilla Developer Network