Avantajele setterelor și getterelor în OOP în JavaScript
În lecția anterioară am creat pentru fiecare proprietate un getter și un setter. Poate apărea întrebarea, de ce sunt necesare astfel de complexități, având în vedere că, practic, același efect poate fi obținut dacă proprietățile sunt făcute publice, nu private.
Faptul este că gettere și settere au un avantaj: înainte de a accesa proprietatea se pot efectua unele verificări. De exemplu, în cazul nostru, la scrierea nume și prenume putem verifica, că noua valoare nu este un șir gol:
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;
}
}
Să verificăm cum funcționează acest lucru. Pentru început, să creăm un obiect al clasei:
let user = new User;
Acum să încercăm să scriem o valoare corectă:
user.setName('john');
Și acum să încercăm să scriem o valoare incorectă:
user.setName(''); // eroare
În clasa Employee în setter-ul
vârstei faceți o verificare ca
vârsta să fie
de la 0 până la 120.
În clasa Employee în getter-ul
salariului faceți astfel încât
la citirea salariului la sfârșitul
valorii sale să fie adăugat simbolul dolar.