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
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.