Pages

Object.create

Les fonctions et les objets ont un [[Prototype]]. 
  • Il assure la chaîne de délégation.
Seule la fonction possède un prototype. 
  • 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 !

let animal = {
        legs: 4
    },

let dog = Object.create(animal);

dog
-> Une fonction possède un prototype !
function Animal() { }; //SuperClass
function Dog() { }; // SubClass

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog; // mise à jour, car l'objet a été ecrasé


subclass-superclass

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 !


Capture.PNG