Il existe un principe célèbre de réutilisation du code, proposé par GoF : donner la priorité à la composition des objets plutôt qu'à l'héritage des classes. En JavaScript, il n'y a pas de notion de classes, la réutilisation du code ne se limite donc pas à l'héritage de classes. Il existe de nombreuses façons de créer des objets en JavaScript. Il existe des constructeurs, vous pouvez utiliser new pour créer des objets et vous pouvez modifier dynamiquement des objets. L'héritage non-classe de JavaScript (que l'on peut appeler le modèle d'héritage moderne) dispose également de nombreuses méthodes de réutilisation, telles que l'utilisation d'autres objets pour les combiner en objets requis, la technologie de mélange d'objets, l'emprunt et la réutilisation des méthodes requises.
Mode d'héritage de classe-mode par défaut
Exemples de deux constructeurs Parent et Enfant :
Ce qui suit est une méthode d'implémentation de la fonction d'héritage réutilisable Ensure() :
L'attribut prototype ici doit pointer vers un objet, pas une fonction, il doit donc pointer vers une instance créée par le constructeur parent, et non vers le constructeur lui-même.
Après cela, lorsque l'objet Enfant sera créé, ses fonctions seront obtenues à partir de l'instance Parent via le prototype :
La chaîne prototype après appel à l'héritage :
Ajouter d'autres attributs de kid :
Changements dans la chaîne des prototypes :
Vous pouvez trouver le nom dans les propriétés de votre propre objet, vous n'avez donc pas besoin de rechercher la chaîne de prototypes.
L'un des inconvénients de l'utilisation du modèle ci-dessus est que les attributs de deux objets sont hérités en même temps, à savoir les attributs ajoutés à celui-ci et les attributs du prototype. La plupart du temps, ces propriétés ne sont pas nécessaires.
Un autre inconvénient est que l'utilisation de l'héritage Ensure() ne prend pas en charge la transmission de paramètres aux sous-constructeurs, par exemple :
Ce résultat n'est pas attendu. Bien que le constructeur enfant puisse transmettre des paramètres au constructeur parent, ce mécanisme d'héritage doit être réexécuté à chaque fois qu'un objet enfant est nécessaire, et il est inefficace car à la fin l'objet parent sera recréé.
Cet article se termine ici. Nous continuerons à mettre à jour les autres modes de réutilisation du code JavaScript à l'avenir.