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!"

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