Prednosti seterjev in geterjev v OOP v JavaScript
V prejšnji lekciji smo naredili za vsako lastnost geter in seter. Lahko se pojavi vprašanje, zakaj so potrebne takšne zapletenosti, saj dejansko enakega učinka lahko dosežemo, če naredimo lastnosti javne in ne zasebne.
Bistvo je v tem, da imajo geterji in seterji prednost: pred dostopom do lastnosti lahko izvedemo nekatere preveritve. Na primer, v našem primeru lahko pri zapisovanju imena in priimka preverimo, da nova vrednost ni prazen niz:
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;
}
}
Preverimo, kako to deluje. Najprej ustvarimo objekt razreda:
let user = new User;
Zdaj poskusimo zapisati korektno vrednost:
user.setName('john');
Zdaj pa poskusimo zapisati nekorektno:
user.setName(''); // napaka
V razredu Employee v seterju
starosti naredite preverjanje, da
mora biti starost
od 0 do 120.
V razredu Employee v geterju
plače naredite tako, da se
pri branju plače na konec njene
vrednosti doda znak dolarja.