Setterių ir getterių pranašumai OOP JavaScripte
Ankstesnėje pamokoje mes sukūrėme kiekvienam savybei getterį ir setterį. Gali kilti klausimas, kam reikalingi tokie sudėtingumai, nes iš esmės to pačio efekto galima pasiekti, jei savybes padarytume viešas, o ne privačias.
Esmė ta, kad getteriai ir setteriai turi pranašumą: prieš kreipiantis į savybę galima atlikti tam tikrus patikrinimus. Pavyzdžiui, mūsų atveju, įrašant vardą ir pavardę, galime patikrinti, ar nauja reikšmė nėra tuščias eilutė:
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;
}
}
Patikrinkime, kaip tai veikia. Pirmiausia sukurkime klasės objektą:
let user = new User;
Dabar pabandykime įrašyti teisingą reikšmę:
user.setName('john');
O dabar pabandykime įrašyti neteisingą:
user.setName(''); // klaida
Klasėje Employee setteryje
amžiaus atlikite patikrinimą, kad
amžius turi būti
nuo 0 iki 120.
Klasėje Employee getteryje
atlyginimo padarykite taip, kad
skaitant atlyginimą prie jo
reikšmės galo būtų pridedamas dolerio ženklas.