Prototypal Inheritance

JavaScript 🟡 Mid

Définition

Modèle d'héritage de JS ou les objets héritent directement d'autres objets via la prototype chain, contrairement a l'héritage classique par classes. Les classes ES6 sont du sucre syntaxique dessus.

Analogie

Photocopier un document et modifier la copie : l'original reste intact, et tu peux toujours te référer a lui.

Exemple de code

function Vehicle(type) { this.type = type; }
Vehicle.prototype.describe = function() {
  return `I am a ${this.type}`;
};
const car = new Vehicle('car');
car.describe(); // 'I am a car'

Cas d'usage

Créer des hiérarchies d'objets légères sans le coût d'un système de classes complet.

#core#interview#OOP

En entretien

  1. Explique-moi le principe de l'héritage prototypal en JS.

    C'est un modèle où les objets héritent directement d'autres objets via la prototype chain, contrairement à l'héritage classique par classes. Les classes ES6 ne sont que du sucre syntaxique par-dessus ce mécanisme.

  2. Quelle différence avec l'héritage classique qu'on trouve dans d'autres langages ?

    Ici on part d'un objet existant et on le prolonge, un peu comme photocopier un document et modifier la copie en gardant l'original intact. Ça permet de créer des hiérarchies légères sans le coût d'un vrai système de classes.

  3. Dans quel cas tu utiliserais ce mécanisme directement, sans passer par class ?

    Pour créer des hiérarchies d'objets légères sans le coût d'un système de classes complet, comme dans l'exemple Vehicle.prototype.describe. On ajoute une méthode partagée sur le prototype plutôt que de la dupliquer sur chaque instance.

Fiche mise à jour le 2026-09-27

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