Prednosti setera i getera u OOP-u u JavaScript-u
U prethodnoj lekciji smo napravili geter i seter za svako svojstvo. Može se postaviti pitanje, čemu su potrebne takve komplikacije, jer se zapravo istog efekta može postići ako se svojstva naprave javnim, a ne privatnim.
Stvar je u tome što geteri i seteri imaju prednost: pre pristupa svojstvu mogu se izvršiti neke provere. Na primer, u našem slučaju pri upisu imena i prezimena možemo proveriti da li nova vrednost nije prazan 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;
}
}
Hajde da proverimo kako ovo radi. Za početak kreirajmo objekat klase:
let user = new User;
Sada pokušajmo da upišemo korektnu vrednost:
user.setName('john');
A sada pokušajmo da upišemo nekorektnu:
user.setName(''); // greška
U klasi Employee u seteru
godina uradi proveru da
godine moraju biti
od 0 do 120.
U klasi Employee u geteru
plata napravi tako da
pri čitanju plate na kraj njene
vrednosti bude dodat znak dolara.