Предности сетера и гетера у ООП-у у 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 у гетеру
плате направите тако да
при читању плате на крај њене
вредности буде додат знак долара.