Menu
Coddy logo textTech

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 getters et les setters 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 façon dont les propriétés sont accédées et modifiées.

Créons une simple classe Person :

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

Maintenant, nous pouvons utiliser ces getters et setters comme des propriétés :

// Créer un nouveau Person
const person = new Person('John', 'Doe');

// Utiliser le getter
console.log(person.fullName); // Résultat : John Doe

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

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

Remarquez que nous n'appelons pas ces méthodes avec des parenthèses. Elles se comportent exactement comme des propriétés mais exécutent du code lorsqu'elles sont accédées ou modifiées.

challenge icon

Défi

On vous donne une classe User avec une propriété age. Votre tâche est d'ajouter un getter et un setter pour age qui :

  1. Getter <strong>get age()</strong> : retourne l'âge stocké
  2. Setter <strong>set age(newAge)</strong> : valide que l'âge est compris entre 0 et 120
    • Si valide (0-120) : stockez-le dans this._age
    • Si invalide : ne le changez pas et affichez "Invalid age!"

Aide-mémoire

Les getters et setters sont des méthodes spéciales qui ressemblent à des propriétés mais qui exécutent du code lorsqu'elles sont consultées ou modifiées.

Getter - utilisez le mot-clé get pour définir une méthode qui retourne une valeur :

class Person {
  constructor(firstName, lastName) {
    this._firstName = firstName;
    this._lastName = lastName;
  }
  
  get fullName() {
    return `${this._firstName} ${this._lastName}`;
  }
}

Setter - utilisez le mot-clé set pour définir une méthode qui accepte une valeur :

class Person {
  set fullName(value) {
    const parts = value.split(' ');
    this._firstName = parts[0];
    this._lastName = parts[1];
  }
}

Utilisation - accédez aux getters et setters comme à des propriétés (sans parenthèses) :

const person = new Person('John', 'Doe');

// Using getter
console.log(person.fullName); // John Doe

// Using setter
person.fullName = 'Jane Smith';
console.log(person.fullName); // Jane Smith

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