JavaScript의 OOP에서 비공개 속성
외부에서 읽고 쓸 수 있는 객체의 속성을 공개(public) 속성이라고 합니다. 반면 비공개(private) 속성도 존재하는데, 이는 클래스 내부에서만 접근 가능합니다.
비공개 속성의 이름은
# 기호로 시작해야 합니다.
또한, 이러한 속성은 반드시
클래스 코드의 시작 부분에 선언해야 합니다.
한번 해보겠습니다:
class User {
#name;
}
이제 우리의 속성에 데이터를 기록해 보겠습니다. 이는 예를 들어 클래스의 생성자에서 수행할 수 있습니다:
class User {
#name;
constructor(name) {
this.#name = name;
}
}
이제 우리 속성의 값을 반환하는 메서드를 만들어 보겠습니다:
class User {
#name;
constructor(name) {
this.#name = name;
}
show() {
return this.#name;
}
}
사용자 이름을 매개변수로 전달하여 클래스의 객체를 생성해 보겠습니다:
let user = new User('john');
클래스 외부에서 우리의 속성에 직접 접근하려고 시도하면 오류가 발생합니다:
console.log(user.#name); // 오류
반면 우리의 메서드를 호출하면 이 속성을 읽을 수 있습니다:
console.log(user.show()); // 'john' 출력
Employee 클래스에서
세 개의 비공개 속성: 이름, 급여,
나이를 만드세요.
생성자의 매개변수로 이러한 속성들의 값을 전달하세요.
직원의 데이터를 출력하는 메서드를 만드세요.