Mutateurs : Getter, Setter
En programmation objet, il est d'usage pour certaines propriétés sensibles de ne pas accéder directement aux propriétés.
Pour lire et modifier leurs valeurs, on passe par l'intermédiaire de méthodes qui permettent de sécuriser leur utilisation.
Ces méthodes s'appellent des accesseurs (getter) pour lire leurs valeurs et des mutateurs (setter) pour modifier leurs valeurs.
const fiche = {
patronyme: "",
changerNom: function (nom) {
this.patronyme = nom.replace(/[^a-z]/ig,''); // ne garde que les caractères alphanumériques
},
afficherNom: function () {
return this.patronyme.toUpperCase(); // retourne le patronyme en majuscule
}
}
fiche.changerNom('3dup56ont'); // {patronyme: 'dupont', changerNom: ƒ, afficherNom: ƒ}
console.log(fiche.afficherNom()); // affiche 'DUPONT'
En JavaScript, on peut simuler l'affectation et la lecture de propriétés d'objets en cachant le passage par des accesseurs et des mutateurs.
Définition : Getter
Un accesseur est une méthode qui permet de récupérer un contenu comme si on lisait une propriété.
const fiche = {
patronyme: "dUpOnT"
}
Object.defineProperty(fiche, 'nom', {
get: function() {
return this.patronyme.toUpperCase();
}
})
Testez le code précédent et vérifiez les instructions suivantes
fiche
fiche.nom
Définition : Setter
Un mutateur est une méthode qui permet d'affecter un contenu comme si on affectait une propriété.
const fiche = {
patronyme: ""
}
Object.defineProperty(fiche, 'nom', {
set: function(nom) {
this.patronyme = nom.replace(/[^a-z]/ig,'');
}
})
Testez le code précédent et vérifiez les instructions suivantes
fiche.nom = "du45po67nt"
fiche
Définition : Écriture simplifiée des getters et setters
const fiche = {
patronyme: "",
get nom(){return this.patronyme.toUpperCase()},
set nom(nom){this.patronyme = nom.replace(/[^a-z]/ig,'')}
}