Prototype Chain

JavaScript 🟡 Mid

Définition

Chaîne de prototypes par laquelle JS recherche les propriétés et méthodes. Chaque objet a un [[Prototype]] interne qui pointe vers un autre objet, jusqu'a null.

Analogie

L'arbre généalogique : si tu ne sais pas cuisiner, tu demandes a ta mère, puis a ta grand-mère, en remontant les générations.

Exemple de code

const animal = { eat() { return true; } };
const dog = Object.create(animal);
dog.bark = () => 'Woof';
dog.eat();  // true (remonte la chaine)
dog.bark(); // 'Woof' (propre)

Cas d'usage

Comprendre l'héritage en JS, le fonctionnement de class/extends, et optimiser la recherche de propriétés.

Anti-pattern

Modifier Object.prototype directement, polluant tous les objets de l'application.
#core#interview#OOP

En entretien

  1. C'est quoi la prototype chain ?

    C'est la chaîne par laquelle JS recherche les propriétés et méthodes : chaque objet a un [[Prototype]] interne qui pointe vers un autre objet, jusqu'à null. C'est comme un arbre généalogique, si tu ne sais pas cuisiner, tu demandes à ta mère, puis à ta grand-mère.

  2. Pourquoi c'est risqué de modifier Object.prototype directement ?

    Parce que ça pollue tous les objets de l'application, puisque tous remontent tôt ou tard jusqu'à Object.prototype dans la chaîne. C'est l'anti-pattern classique à éviter absolument.

  3. Dans l'exemple avec dog = Object.create(animal), comment dog.eat() trouve la méthode alors qu'elle n'est pas définie sur dog ?

    JS ne trouve pas eat directement sur dog, donc il remonte la chaîne jusqu'à animal où elle est définie. C'est ce même mécanisme qui sert de base à class/extends et qu'il faut comprendre pour optimiser la recherche de propriétés.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre