Setterite ja getterite eelised OOP-s JavaScriptis
Eelmises tunnis tegime iga atribuudi jaoks getteri ja setteri. Võib tekkida küsimus, miks sellised keerukused on vajalikud, kuna tegelikult sama efekti saavutame, kui teeme atribuudid avalikeks, mitte privaatseteks.
Asi on selles, et getteritel ja setteritel on eelis: enne atribuudi poole pöördumist saab teha mõningaid kontrollimisi. Näiteks meie puhul saame nime ja perekonnanime kirjutamisel kontrollida, et uus väärtus ei oleks tühi string:
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;
}
}
Kontrollime, kuidas see töötab. Kõigepealt loome klassi objekti:
let user = new User;
Nüüd proovime kirjutada korrektset väärtust:
user.setName('john');
Nüüd proovime kirjutada ebakorrektset:
user.setName(''); // viga
Klassis Employee tehke vanuse setteris
kontroll, et vanus peaks olema
0 kuni 120 vahel.
Klassis Employee tehke palga getteris
nii, et palga lugemisel lisataks selle
väärtuse lõppu dollari märk.