Les fonctions et les objets ont un [[Prototype]].
let animal =
- Il assure la chaîne de délégation.
- Il regroupe les méthodes et objets à partager,
- Il est pointé par la chaîne de délégation
-> Un objet n'a pas de prototype !
{ legs: 4 },
let dog = Object.create(animal);-> Une fonction possède un prototype !function Animal() { }; //SuperClassfunction Dog() { }; // SubClassDog.prototype = Object.create(Animal.prototype);Dog.prototype.constructor = Dog; // mise à jour, car l'objet a été ecrasé
Dans le cas des fonctions, Il ne faudra pas confondre la propriété __proto__ ou [[Prototype]] avec la propriété prototype.
le prototype permet de partager les fonctions communes des instances d’un même objet. Et cet objet est pointé par le lien __proto__ d’autres objets.
Vous pouvez vérifier sur le code suivant les structures !