Menu
CoddyTech

Les mots-clés get et set

Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy. Leçon 43 sur 56.

Les accesseurs et mutateurs sont des méthodes spéciales qui ressemblent à des propriétés, mais qui sont en réalité des fonctions. Ils vous donnent le contrôle sur la manière dont les propriétés sont consultées et modifiées.

Créons une classe Person simple :

class Person {
  constructor(firstName, lastName) {
    this._firstName = firstName;
    this._lastName = lastName;
  }
  
  // Accesseur pour fullName
  get fullName() {
    return `${this._firstName} ${this._lastName}`;
  }
  
  // Mutateur pour fullName
  set fullName(value) {
    const parts = value.split(' ');
    this._firstName = parts[0];
    this._lastName = parts[1];
  }
}

Le trait de soulignement dans _firstName et _lastName est une convention de nommage : il indique aux autres développeurs que ces propriétés sont internes et qu’elles doivent être lues et modifiées par l’intermédiaire du getter et du setter, et non directement. JavaScript ne l’impose pas.

Nous pouvons maintenant utiliser ces getters et setters comme des propriétés :

// Créer une nouvelle instance de Person
const person = new Person('John', 'Doe');

// Utiliser le getter
console.log(person.fullName); // Sortie : John Doe

// Utiliser le setter
person.fullName = 'Jane Smith';

// Le setter a mis à jour les propriétés internes
console.log(person.fullName); // Sortie : Jane Smith

Note que nous n’appelons pas ces méthodes avec des parenthèses. Elles se comportent comme des propriétés, mais exécutent du code lorsqu’on y accède ou qu’on les modifie.

challenge icon

Défi

On vous donne une classe User avec une propriété age. Votre tâche consiste à ajouter un accesseur et un mutateur pour age qui :

  1. Accesseur get age() : renvoie l’âge stocké
  2. Mutateur set age(newAge) : vérifie que l’âge est compris entre 0 et 120
    • S’il est valide (0-120) : le stocker dans this._age
    • S’il est invalide : ne pas le modifier et afficher "Invalid age!"

Essayez vous-même

import { User } from './user.js';

// Code de test - ne pas modifier
const user = new User("Alice", 25);
console.log(user.age);      // Devrait afficher 25

user.age = 30;
console.log(user.age);      // Devrait afficher 30

user.age = 150;             // Devrait afficher "Invalid age!"
console.log(user.age);      // Devrait toujours afficher 30 (inchangé)

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur JavaScript en ligne