Maison >interface Web >js tutoriel >Javascript joue avec l'héritage (1)_compétences javascript
Je pense que chacun a sa propre opinion quant à savoir si Javascript est un langage orienté objet ou un langage qui prend en charge les objets. Les fidèles fans de Javascript doivent dire que Javascript est un langage orienté objet. Par exemple, le livre "Le retour du roi de Javascript" décrit Javascript comme étant orienté objet basé sur des prototypes. Permettez-moi de partager mon opinion personnelle. Les trois caractéristiques de l'orientation objet, de l'héritage, du polymorphisme et de l'encapsulation. Bien que Javascript ne soit pas aussi rapide à implémenter que les langages orientés objet tels que Java et C#, il bénéficie néanmoins d'un certain support. Il est donc logique de dire que Javascript est un langage orienté objet. Cependant, du point de vue de l'héritage, il existe une série de méthodes d'héritage, mais chaque méthode d'héritage ne peut pas réaliser la puissance d'un véritable langage orienté objet. on dit que c'est orienté objet. Un peu tiré par les cheveux. Pour résumer, ma compréhension de Javascript est que je préfère l'appeler orienté objet simplifié, ou "pseudo" orienté objet (ce pseudo mot n'a aucune signification péjorative).
Aujourd'hui, nous allons parler de la première fonctionnalité de l'orientation objet : l'héritage.
Qu'est-ce que l'héritage ? Je ne veux pas dire de bêtises à ce sujet. Il y a un animal, une personne et une fille. C'est la chaîne d'héritage la plus simple et la plus typique.
Dans les langages orientés objet comme C#, c'est simple.
Donc en Javascript, il n'y a pas de classe ou d'héritage pour assurer l'implémentation, que devons-nous faire ?
Camouflage d'objet (méthode d'héritage de construction)
Qu'est-ce que le camouflage d'objet ? Nous pourrions appeler cela l’héritage structurel pour le rendre plus facile à comprendre. Comme son nom l'indique, vous utilisez des constructeurs pour jouer avec l'héritage. En fait, cela signifie que le constructeur de la classe parent est considéré comme une méthode ordinaire et est exécuté dans le constructeur de la sous-classe. Dans ce cas, lors de la construction de l'objet, l'objet de la sous-classe peut bien sûr construire la méthode de la classe parent. classe parentale !
Toujours en utilisant l'exemple ci-dessus, le code est le suivant :
Les résultats sont les suivants :
a.
b.
c.
d.
e.
f.
Test réussi !
Résumons les points clés de ce code, spécifions la classe parent, déclarons l'objet de classe parent, puis supprimons les variables temporaires. Trouvez-vous cela gênant ? Du moins c'est ce que je pense. Une fois que vous oubliez de supprimer, vous devez toujours supporter le risque que la classe parent soit modifiée. Pour cela, nous utilisons call et apply pour améliorer cela !
Regardons le code, toujours l'exemple ci-dessus (afin de faciliter la compréhension de tous, les exigences ont été modifiées, l'animal a un nom) :
Si vous êtes novice, vous pourriez vous sentir un peu confus après avoir regardé les deux morceaux de code suivants : Qu'est-ce que l'appel et qu'est-ce qui s'applique ? Eh bien, dans le sujet jouer avec l'héritage, j'ai ajouté une série de suppléments. Si vous ne comprenez pas cela, vous pouvez lire mon article : "Jouer avec les méthodes : appeler et postuler".
Le camouflage d'objet n'est qu'un moyen d'obtenir l'héritage. Dans le prochain article, je continuerai à écrire sur d'autres méthodes d'héritage et sur les avantages et les inconvénients de plusieurs méthodes d'héritage. Bienvenue pour continuer à y prêter attention.