Avantages des accesseurs (getters) et mutateurs (setters) en POO en JavaScript
Dans la leçon précédente, nous avons créé un accesseur et un mutateur pour chaque propriété. La question peut se poser de savoir pourquoi de telles complexités sont nécessaires, puisqu'en fait, le même effet peut être atteint en rendant les propriétés publiques plutôt que privées.
Le fait est que les accesseurs et les mutateurs présentent un avantage : avant d'accéder à la propriété, il est possible d'effectuer certaines vérifications. Par exemple, dans notre cas, lors de l'assignation du prénom et du nom, nous pouvons vérifier que la nouvelle valeur n'est pas une chaîne vide :
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;
}
}
Vérifions comment cela fonctionne. Commençons par créer un objet de la classe :
let user = new User;
Maintenant, essayons d'assigner une valeur correcte :
user.setName('john');
Et maintenant, essayons d'assigner une valeur incorrecte :
user.setName(''); // erreur
Dans la classe Employee, dans le mutateur
de l'âge, implémentez une vérification pour
que l'âge doit être compris
entre 0 et 120.
Dans la classe Employee, dans l'accesseur
du salaire, faites en sorte que
lors de la lecture du salaire, un symbole dollar
soit ajouté à la fin de sa valeur.