JavaScript OOP에서 게터와 세터의 장점
이전 강의에서 우리는 각 속성에 대해 게터와 세터를 만들었습니다. 왜 이런 복잡한 과정이 필요한지 의문이 들 수 있습니다. 결국 같은 효과를 속성을 비공개가 아닌 공개로 만들면 얻을 수 있을 텐데 말이죠.
게터와 세터에는 장점이 있습니다: 속성에 접근하기 전에 몇 가지 검사를 수행할 수 있다는 점입니다. 예를 들어, 우리의 경우 이름과 성을 설정할 때 새 값이 빈 문자열이 아닌지 확인할 수 있습니다:
class User {
#name;
#surn;
setName(name) {
if (name.length > 0) {
this.#name = name;
} else {
throw new Error('name is incorrect');
}
}
setSurn(surn) {
if (surn.length > 0) {
this.#surn = surn;
} else {
throw new Error('surn is incorrect');
}
}
getName() {
return this.#name;
}
getSurn() {
return this.#surn;
}
}
이것이 어떻게 작동하는지 테스트해 봅시다. 먼저 클래스의 객체를 생성하겠습니다:
let user = new User;
이제 올바른 값을 설정해 보겠습니다:
user.setName('john');
이제 올바르지 않은 값을 설정해 보겠습니다:
user.setName(''); // 오류
Employee 클래스의 나이 세터에서
나이가 0세부터 120세 사이여야
한다는 검사를 추가하세요.
Employee 클래스의 급여 게터에서
급여를 읽을 때 그 값의 끝에
달러 기호가 추가되도록 만드세요.