Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 6 · Application directe du cours

Propriétés propres et héritées

Classes et modules · niveau 2

Énoncé

Qu'affiche ce programme ? On remarquera que x = 1, écrit dans le corps de la classe, est un champ public : chaque objet reçoit sa propre propriété x.


class A {
  x = 1;

  m() {
    return "A";
  }
}

class B extends A {
  m() {
    return "B" + super.m();
  }
}

const b = new B();
console.log(Object.hasOwn(b, "x"), Object.hasOwn(b, "m"), "m" in b);
console.log(Object.getPrototypeOf(b) === B.prototype);
console.log(Object.getPrototypeOf(B.prototype) === A.prototype);
console.log(b.m());
b.m = () => "propre";
console.log(b.m(), new B().m());

Corrigé


true false true
true
true
BA
propre BA

x est une propriété propre de chaque objet, m est sur le prototype (in la trouve, hasOwn non). La chaîne est b → B.prototype → A.prototype. b.m() exécute la version de B, qui appelle celle de A. Enfin, b.m = ... crée une propriété propre sur b, trouvée avant le prototype : elle masque la méthode pour cet objet seulement.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →