Aller au contenu
M05 · B. Acquérir les fondamentaux de JavaScript

Créer et manipuler des objets

Regrouper des données et des comportements dans un objet littéral, lire et modifier ses propriétés, écrire des méthodes avec this, parcourir un objet et créer des objets semblables avec une classe.

1Situer

Pour la fiche d'un appartement à louer à Tétouan, il faut la ville, le quartier, le nombre de chambres, le loyer, la disponibilité, et un moyen de calculer le loyer annuel. Plutôt que six variables séparées, on range tout dans un seul objet : l'appartement.

2Comprendre

Un objet : des propriétés et des méthodes
appart ville : 'Tétouan' chambres : 2 loyer : 2800 disponible : true surface : 85 loyerAnnuel() ƒ const appart = {…} → 'Tétouan' 2800 remplacé par 3000 nouvelle propriété loyerAnnuel() {   return this.loyer * 12; } this → 3000 × 12 = 36000

L'objet appart regroupe ses propriétés sous la forme clé : valeur.

1 / 5

L’objet littéral

const appart = {
  ville: 'Tétouan',          // propriété : clé et valeur
  loyer: 2800,
  equipements: ['cuisine', 'balcon'],
  loyerAnnuel() {            // méthode
    return this.loyer * 12;  // this : l'objet lui-même
  },
};

Lire, modifier, ajouter, supprimer

appart.ville             // lire
appart['loyer']          // lire avec une clé calculée
appart.loyer = 3000;     // modifier
appart.surface = 85;     // ajouter
delete appart.surface;   // supprimer
'ville' in appart        // true : la propriété existe
appart.loyerAnnuel()     // appeler une méthode

Une constante const appart ne peut pas être réaffectée, mais son contenu peut changer.

Parcourir un objet

for (const cle in appart) {
  console.log(`${cle} = ${appart[cle]}`);
}
Object.keys(appart)      // ['ville', 'loyer', ...]
Object.values(appart)
Object.entries(appart)   // [['ville', 'Tétouan'], ...]

Créer des objets semblables : les classes

class Appartement {
  constructor(ville, loyer) {
    this.ville = ville;
    this.loyer = loyer;
  }
  loyerAnnuel() { return this.loyer * 12; }
}
const a = new Appartement('Martil', 4500);

C’est la même idée que les classes Python du module 03 : la classe est le moule, new fabrique un objet.

Exemple simple

La carte d'identité

Une carte d'identité regroupe plusieurs informations sur une même personne : nom, prénom, date de naissance, ville. Un objet JavaScript regroupe des propriétés sous la forme clé : valeur.

const personne = {
  nom: 'Alaoui',
  prenom: 'Salma',
  ville: 'Tétouan',
};
personne.ville;   // "Tétouan"
Exemple simple

Ce que l'objet sait faire

Un téléphone a des caractéristiques (marque, batterie) et des actions (appeler, photographier). Les actions d'un objet sont ses méthodes ; dedans, this désigne l'objet lui-même.

const tel = {
  batterie: 80,
  charger() { this.batterie = 100; },
};

3Manipuler

Complétez l'objet appartement, puis affichez sa fiche dans la page à partir de ses propriétés.
Ouvrir dans le lab ↗
Console
  • Modifiez le loyer à 3000 puis affichez loyerAnnuel() dans la console (36000)
  • Affichez dans #details le quartier et le nombre de chambres (« Mhannech, 2 chambres »)
  • Ajoutez la propriété surface: 85 et affichez-la dans #details (« 85 m² »)
  • Si disponible vaut true, affichez « Disponible » dans #loyer avec la classe dispo
  • Parcourez l'objet avec for...in et affichez « chambres = 2 » dans la console

4Pratiquer

Exercice 1 · Une classe pour plusieurs objets

L'agence a 50 appartements. Écrivez une classe Appartement avec un constructeur (ville, loyer) et une méthode loyerAnnuel(), puis créez deux objets.

Voir le corrigé
class Appartement {
  constructor(ville, loyer) {
    this.ville = ville;
    this.loyer = loyer;
  }
  loyerAnnuel() {
    return this.loyer * 12;
  }
}
const a1 = new Appartement('Tétouan', 3000);
const a2 = new Appartement('Martil', 4500);
console.log(a2.loyerAnnuel()); // 54000

Exercice 2 · La déstructuration

Récupérez ville et loyer de l'objet appart en une seule ligne.

Voir le corrigé
const { ville, loyer } = appart;
console.log(ville, loyer); // Tétouan 3000

Exercice 3 · Copier un objet

Que vaut a.loyer après ce code ? const a = { loyer: 2000 }; const b = a; b.loyer = 9999; Comment faire une vraie copie ?

Voir le corrigé
a.loyer vaut 9999 : a et b désignent le même objet (copie de la référence).
Vraie copie (superficielle) :
const b = { ...a };          // ou Object.assign({}, a)

5Vérifier

1. Comment lit-on la propriété loyer de l'objet appart ?
2. Dans une méthode, que désigne this ?
3. Que renvoie appart.balcon si la propriété n'existe pas ?