Výhody setterů a getterů v OOP v JavaScriptu
V předchozí lekci jsme vytvořili pro každou vlastnost getter a setter. Může vyvstat otázka, k čemu jsou potřebné takové složitosti, když stejného efektu lze dosáhnout, pokud uděláme vlastnosti veřejné, nikoli privátní.
Jde o to, že gettery a settery mají výhodu: před přístupem k vlastnosti lze provést některé kontroly. Například v našem případě při zápisu jména a příjmení můžeme zkontrolovat, že nová hodnota není prázdný řetězec:
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;
}
}
Pojďme vyzkoušet, jak to funguje. Nejprve vytvoříme objekt třídy:
let user = new User;
Nyní zkusíme zapsat správnou hodnotu:
user.setName('john');
A nyní zkusíme zapsat nesprávnou:
user.setName(''); // chyba
Ve třídě Employee v setteru
věku proveďte kontrolu, že
věk musí být
od 0 do 120.
Ve třídě Employee v getteru
platu udělejte to, aby
při čtení platu na konec jeho
hodnoty byl přidán znak dolaru.