Mutateurs en français

Comprendre les mutateurs en JavaScript

Les mutateurs, également appelés setters, sont des méthodes qui permettent de contrôler la manière dont les variables membres d'une classe peuvent être modifiées. En JavaScript, cela se fait souvent à l'aide de variables privées, préfixées du symbole #, et en utilisant le mot-clé set pour définir les mutateurs.

Voici un exemple :

class Animal {
  #name;
  set name(name) {
    this.#name = name;
  }
}
const someAnimal = new Animal();

Dans cet exemple, l'attribut #name est privé, le mutateur name permet de modifier cette variable en lui assignant une valeur.

Note : Il est impossible de récupérer la valeur d'une variable privée sans avoir un accesseur associé (ou getter). Voici comment cela fonctionne :

class Animal {
  #name;
  set name(name) {
    this.#name = name;
  }
}
const someAnimal = new Animal();
someAnimal.name = 'Buddy';
console.log(someAnimal.name); // Affiche undefined

Dans l'exemple ci-dessus, la tentative d'affichage de someAnimal.name génère un résultat de type undefined.

Accéder directement à une variable privée en utilisant le préfixe # provoque une erreur de syntaxe :

class Animal {
  #name;
  set name(name) {
    this.#name = name;
  }
}
const someAnimal = new Animal();
someAnimal.name = 'Buddy';
console.log(someAnimal.#name); // Erreur de syntaxe

L'exemple ci-dessus entraîne une erreur suivante :

SyntaxError: Private field #name must be declared in an enclosing class.

Exemple interactif

Voici un exemple de code pour montrer comment mettre à jour et récupérer la valeur d'une variable privée.

class Animal {
  #name;

  set name(name) {
    this.#name = name;
  }

  get name() {
    return this.#name;
  }
}

const someAnimal = new Animal();
someAnimal.name = 'Max';
console.log(someAnimal.name); // Affiche 'Max'

Dans cet exemple, nous avons ajouté un accesseur (getter) pour récupérer la valeur de la variable privée.

Comment utiliser les mutateurs pour vos projets

L'utilisation de mutateurs dans vos projets web vous permet de mieux gérer l'accès aux données sensibles et aux membres privés de vos classes. Lorsque vous développez des applications, en particulier des sites web ou des startups, encapsuler l'état interne de vos objets peut prévenir des modifications imprévues tout en offrant une interface sécurisée pour modifier et interagir avec ces données.

Par exemple, lorsque vous créez un site de gestion de compte utilisateur ou une application de portefeuille numérique, utiliser des mutateurs vous permettra de garder les données sécurisées tout en proposant des méthodes pour modifier des informations comme les noms ou les préférences utilisateur de manière contrôlée. En intégrant des getters et des setters, vous garantissez que seules les interactions voulues peuvent modifier l'état de votre objet.