Предимства на сетъри и гетъри в ООП в 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 в гетъра
за заплата направете така, че
при четене на заплатата в края на
стойността й да се добавя знакът за долар.