자바스크립트 클래스에서 비공개 속성을 구현하는 방법은 무엇인가요?
여기에는 두 가지 주요한 방법이 있습니다:
- 클로저를 활용한 방법: 클로저를 사용하여 비공개 변수를 생성하고, 내부 함수를 통해 그 변수에 접근하는 방법입니다. 비공개 변수에 접근하려면 내부 함수를 호출해야 합니다.
예를 들어, 다음과 같이 클래스를 작성할 수 있습니다:
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 (비공개 속성에 직접 접근할 수 없음)
- 심볼(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 (비공개 속성에 직접 접근할 수 없음)
비공개 속성을 구현하는 방법은 개발자에게 따라 다를 수 있으며, 프로젝트의 요구사항에 맞게 선택할 수 있습니다.