자바스크립트 클래스에서 비공개 속성을 구현하는 방법은 무엇인가요?

여기에는 두 가지 주요한 방법이 있습니다:

  1. 클로저를 활용한 방법: 클로저를 사용하여 비공개 변수를 생성하고, 내부 함수를 통해 그 변수에 접근하는 방법입니다. 비공개 변수에 접근하려면 내부 함수를 호출해야 합니다.

예를 들어, 다음과 같이 클래스를 작성할 수 있습니다:

class MyClass {
  constructor() {
    let privateVariable = '비공개 변수';

    this.getPrivateVariable = function() {
      return privateVariable;
    };
  }

  publicMethod() {
    let variable = this.getPrivateVariable();
    console.log(variable);
  }
}

let myInstance = new MyClass();
myInstance.publicMethod();  // 출력: '비공개 변수'
console.log(myInstance.privateVariable);  // 출력: undefined (비공개 속성에 직접 접근할 수 없음)
  1. 심볼(Symbol)을 사용한 방법: 심볼은 유일하고 변경할 수 없는 값을 나타내는 자료형입니다. 클래스 내에서 심볼을 사용하여 비공개 속성을 생성하고, 해당 심볼을 통해서만 접근할 수 있도록 할 수 있습니다.

예를 들어, 다음과 같이 클래스를 작성할 수 있습니다:

const privateVariable = Symbol('비공개 변수');

class MyClass {
  constructor() {
    this[privateVariable] = '비공개 변수';
  }

  publicMethod() {
    let variable = this[privateVariable];
    console.log(variable);
  }
}

let myInstance = new MyClass();
myInstance.publicMethod();  // 출력: '비공개 변수'
console.log(myInstance[privateVariable]);  // 출력: undefined (비공개 속성에 직접 접근할 수 없음)

비공개 속성을 구현하는 방법은 개발자에게 따라 다를 수 있으며, 프로젝트의 요구사항에 맞게 선택할 수 있습니다.