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