Zalety setterów i getterów w OOP w JavaScript
W poprzedniej lekcji zrobiliśmy dla każdej właściwości getter i setter. Może pojawić się pytanie, po co potrzebne są takie skomplikowania, przecież faktycznie tego samego efektu można osiągnąć, jeśli zrobić właściwości publicznymi, a nie prywatnymi.
Chodzi o to, że gettery i settery mają zaletę: przed odwołaniem się do właściwości można wykonać pewne sprawdzenia. Na przykład, w naszym przypadku przy zapisie imienia i nazwiska możemy sprawdzić, że nowa wartość nie jest pustym ciągiem znaków:
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;
}
}
Sprawdźmy, jak to działa. Na początek stwórzmy obiekt klasy:
let user = new User;
Teraz spróbujmy zapisać prawidłową wartość:
user.setName('john');
A teraz spróbujmy zapisać nieprawidłową:
user.setName(''); // błąd
W klasie Employee w setterze
wieku zrób sprawdzenie, że
wiek powinien być
od 0 do 120.
W klasie Employee w getterze
wypłaty zrób tak, aby
przy odczycie wypłaty na koniec jej
wartości był dodawany znak dolara.