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 SmithRemarquez 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.
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 :
- Getter
<strong>get age()</strong>: retourne l'âge stocké - 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!"
- Si valide (0-120) : stockez-le dans
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 SmithEssayez 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é)
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
1Objets et le mot-clé this
Révision rapide : Les objetsAjouter des méthodes aux objetsComprendre le mot-clé thisFonctions constructeursLe mot-clé newDéfi récapitulatif7L'héritage et le mot-clé extends
L'héritageLa relation « est un »Le mot-clé extendsLa méthode super()Hériter des propriétés et méthodesDéfi récapitulatif10Polymorphisme
Qu'est-ce que le polymorphisme ?Redéfinition de méthodes héritéesUtiliser superDéfi récapitulatif13Composition vs Héritage
Les relations « has-a » vs « is-a »Les limites de l'héritage profondConstruction d'objets2Organisation du code
Qu'est-ce qu'un module ?Exporter avec exportImporter avec importExports par défaut vs nommés5Encapsulation & Accès
EncapsulationChamps de classe publics et privésMéthodes privéesDéfi récapitulatif8Organisation du code POO
Organiser les classes en modules11Projet : Un moteur de rendu de formes
Configuration : Classe Shape et ExportationHéritage de la classe Circle14Système de gestion de bibliothèque
Conception de la bibliothèqueClasse Book avec composition3Classes et Objets
Qu'est-ce qu'une classe ?Créer des instancesPropriétés et méthodesDéfi récapitulatif9Méthodes et propriétés statiques
Niveau classe vs Niveau instancePropriétés statiquesMéthodes utilitaires statiquesDéfi récapitulatif12Getters et Setters
Les mots-clés get et setPropriétés calculéesValidation et effets de bordDéfi récapitulatif