Перавагі сетэраў і гетэраў у ААП у JavaScript
У папярэднім уроке мы зрабілі для кожнага ўласцівасці гетэр і сетэр. Можа ўзнікнуць пытанне, навошта патрэбныя такія складанасці, бо фактычна таго ж самага эфекту можна дасягнуць, калі зрабіць ўласцівасці публічнымі, а не прыватнымі.
Справа ў тым, што гетэры і сетэры маюць перавагу: перад зваротам да ўласцівасці можна выконваць некаторыя праверкі. Напрыклад, у нашым выпадку мы пры запісе імені і прозвішча можам праверыць, што новае значэнне не з'яўляецца пустым радком:
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 у гетэры
зарплаты зрабіце так, каб
пры чытанні зарплаты ў канец яе
значэння дадаваўся знак даляра.