Vantaggi dei setter e getter in OOP in JavaScript
Nella lezione precedente abbiamo creato un getter e un setter per ogni proprietà. Potrebbe sorgere la domanda: a cosa servono tali complicazioni, dato che sostanzialmente lo stesso effetto può essere ottenuto rendendo le proprietà pubbliche, anziché private.
Il punto è che i getter e i setter hanno un vantaggio: prima di accedere alla proprietà è possibile eseguire alcuni controlli. Ad esempio, nel nostro caso, quando impostiamo nome e cognome, possiamo verificare che il nuovo valore non sia una stringa vuota:
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;
}
}
Verifichiamo come funziona. Per prima cosa creiamo un oggetto della classe:
let user = new User;
Ora proviamo a impostare un valore corretto:
user.setName('john');
E ora proviamo a impostare un valore non corretto:
user.setName(''); // errore
Nella classe Employee, nel setter
dell'età, aggiungete un controllo per verificare
che l'età deve essere compresa
tra 0 e 120.
Nella classe Employee, nel getter
dello stipendio, fate in modo che
alla lettura dello stipendio, alla fine del suo
valore venga aggiunto il simbolo del dollaro.