Voordelen van setters en getters in OOP in JavaScript
In de vorige les hebben we voor elke eigenschap een getter en setter gemaakt. Men zou zich kunnen afvragen waarom zulke complexiteit nodig is, want in feite kan hetzelfde effect worden bereikt door de eigenschappen publiek te maken in plaats van privé.
Het punt is dat getters en setters een voordeel hebben: voor toegang tot de eigenschap kunnen er enkele controles worden uitgevoerd. In ons geval kunnen we bijvoorbeeld bij het opslaan van de voor- en achternaam controleren of de nieuwe waarde geen lege string is:
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;
}
}
Laten we testen hoe dit werkt. Laten we eerst een object van de klasse aanmaken:
let user = new User;
Laten we nu proberen een correcte waarde op te slaan:
user.setName('john');
En laten we nu proberen een incorrecte op te slaan:
user.setName(''); // fout
Maak in de klasse Employee in de setter
voor leeftijd een controle dat
de leeftijd tussen 0 en 120 moet liggen.
Zorg in de klasse Employee in de getter
voor salaris ervoor dat
bij het uitlezen van het salaris aan het einde
ervan een dollarteken wordt toegevoegd.