Výhody setterov a getterov v OOP v JavaScripte
V predchádzajúcej lekcii sme vytvorili pre každú vlastnosť getter a setter. Môže vzniknúť otázka, na čo sú takéto komplikácie potrebné, veď v podstate rovnakého efektu sa dá dosiahnuť, ak urobíme vlastnosti verejnými, nie súkromnými.
Vec sa má tak, že gettre a setre majú výhodu: pred prístupom k vlastnosti je možné vykonať niektoré kontroly. Napríklad, v našom prípade pri zápise mena a priezviska môžeme skontrolovať, že nová hodnota nie je prázdny reťazec:
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;
}
}
Poďme otestovať, ako to funguje. Najprv vytvoríme objekt triedy:
let user = new User;
Teraz skúsme zapísať korektnú hodnotu:
user.setName('john');
A teraz skúsme zapísať nekorektnú:
user.setName(''); // chyba
V triede Employee v setteri
veku vykonajte kontrolu, že
vek musí byť od 0 do 120.
V triede Employee v getteri
platu urobte tak, aby
pri čítaní platu na koniec jeho
hodnoty bol pridaný znak dolára.