JavaScript Héritage prototypique


Exemple

Supposons que nous ayons un objet simple appelé prototype :

var prototype = { foo: 'foo', bar: function () { return this.foo; } };

Maintenant, nous voulons un autre objet appelé obj qui hérite du prototype , ce qui revient à dire que le prototype est le prototype de obj

var obj = Object.create(prototype);

Maintenant, toutes les propriétés et méthodes du prototype seront disponibles pour obj

console.log(obj.foo);
console.log(obj.bar());

Sortie de la console

"foo"
"foo"

L'héritage prototypal se fait par des références d'objet en interne et les objets sont complètement mutables. Cela signifie que tout changement effectué sur un prototype affectera immédiatement tous les autres objets dont le prototype est le prototype.

prototype.foo = "bar";
console.log(obj.foo);

Sortie de la console

"bar"

Object.prototype est le prototype de chaque objet, il est donc fortement recommandé de ne pas jouer avec, en particulier si vous utilisez une bibliothèque tierce, mais nous pouvons en jouer un peu.

Object.prototype.breakingLibraries = 'foo';
console.log(obj.breakingLibraries);
console.log(prototype.breakingLibraries);

Sortie de la console

"foo"
"foo"

Fait amusant, j'ai utilisé la console du navigateur pour créer ces exemples et briser cette page en ajoutant cette propriété de breakingLibraries .