Propriétés calculées
Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy — leçon 44 sur 56.
Les propriétés calculées sont des accesseurs (getters) qui calculent et retournent une valeur au lieu de simplement retourner des données stockées. Elles ressemblent à des propriétés classiques mais calculent leur valeur à la volée.
Jetons un coup d'œil à l'exemple. Nous avons un objet avec une propriété régulière :
const circle = {
radius: 5
};Maintenant, nous ajoutons une propriété calculée en utilisant un getter :
const circle = {
radius: 5,
get diameter() {
return this.radius * 2;
}
};Voici comment nous accédons à la propriété calculée :
console.log(circle.diameter); // Affiche : 10Si nous mettons à jour le rayon, le diamètre se met également à jour automatiquement :
circle.radius = 10;
console.log(circle.diameter); // Affiche : 20Les propriétés calculées sont utiles lorsque la valeur d'une propriété dépend d'autres propriétés ou nécessite un calcul.
Défi
On vous donne une classe Rectangle avec les propriétés width et height. Votre tâche consiste à ajouter des propriétés calculées pour area et perimeter.
- Propriété calculée
<strong>area</strong>- retourne width × height - Propriété calculée
<strong>perimeter</strong>- retourne 2 × (width + height)
Aide-mémoire
Les propriétés calculées sont des getters qui calculent et retournent une valeur au lieu de simplement retourner des données stockées. Elles calculent leur valeur à la volée.
Définissez une propriété calculée en utilisant le mot-clé get :
const circle = {
radius: 5,
get diameter() {
return this.radius * 2;
}
};Accédez aux propriétés calculées comme à des propriétés régulières (sans parenthèses) :
console.log(circle.diameter); // Outputs: 10Les propriétés calculées se mettent à jour automatiquement lorsque leurs propriétés dépendantes changent :
circle.radius = 10;
console.log(circle.diameter); // Outputs: 20Essayez vous-même
import { Rectangle } from './rectangle.js';
// Code de test - ne pas modifier
const rect = new Rectangle(5, 10);
console.log(`Area: ${rect.area}`); // Devrait afficher "Area: 50"
console.log(`Perimeter: ${rect.perimeter}`); // Devrait afficher "Perimeter: 30"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