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() { }; //
SuperClass
function
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 !