Qu'est-ce que “l'héritage” en Javascript?
Quelqu'un peut-il m'expliquer avec des mots simples le sens de "héritage" en JavaScript?
Vous devez vous connecter pour publier un commentaire.
Quelqu'un peut-il m'expliquer avec des mots simples le sens de "héritage" en JavaScript?
Vous devez vous connecter pour publier un commentaire.
En termes simples, l'héritage est le concept d'une chose acquérir les propriétés ou les comportements de quelque chose d'autre. Pour dire Un hérite de B, c'est dire qu'Un est un type de B. Un Oiseau hérite de l'Animal, car un Oiseau est un type de Animal, il peut faire les mêmes choses, mais un peu plus (ou différemment)!
En JavaScript, cette relation est un peu compliqué à préciser, mais l'ours avec la syntaxe. Vous devez utiliser un objet spécial appelé
prototype
qui attribue des propriétés à un type comme des Animaux. Seulementfunction
s ont unprototype
, qui est pourquoi vous devez créer une fonction première:Maintenant pour créer un type qui hérite de l'Animal, vous pouvez également utiliser la
prototype
objet, mais cette fois, l'un appartenant à l'autre type, par exemple, l'Oiseau:L'effet de ceci est que les Oiseaux que vous créez (appelé instance des Oiseaux) ont toutes les propriétés des Animaux, mais ils doivent aussi
.fly()
:Une belle explication Robert sur l'Héritage en Javascript ici
La façon dont l'héritage fonctionne en JavaScript, c'est qu'il est
prototype
, au lieu declass-based
.Pour l'e.g
Un objet qui hérite Être
Donc, fondamentalement, si nous créons une nouvelle instance de la Robert objet et l'appel de certaines de ses méthodes, le résultat serait:
Également une bonne lecture de JavaScript héritage : JavaScript Héritage
Robert est en droit de "l'héritage" ne signifie pas autre chose en JS, mais il est mis en œuvre différemment que dans de nombreuses autres langues. Pour dire qu'un objet ou une classe hérite d'une autre, signifie que les membres (attributs, comportement) peut être définie sur le parent, mais accessible par l'enfant. Avant de vous demander ce que "les membres de la" les moyens, les objets sont les types d'agrégats (aka types de composé), et les membres sont les composants.
JS a été conçu à l'origine avec prototype à base d'héritage, où les parents sont des objets, mais de la classe de base d'héritage (une sorte de) peut être entassé dans par divers moyens. Les Classes (et donc l'héritage de classe) peut être ajouté plus tard ECMAScript normes, ce qui est la norme qui définit le JS, le long de avec d'autres langues telles que l'ActionScript. ActionScript prend déjà en charge les classes.
Étroitement liée à "l'héritage" est "extension", où l'enfant s'étend d'un parent par l'ajout ou remplacement de membres.
C'est aussi simple que vous pouvez hériter de propriétés à partir d'un autre objet javascript comme ceci:
John Resig de jQuery a un exellent guide http://ejohn.org/apps/learn/
à propos de l'héritage http://ejohn.org/apps/learn/#76
MODIFIER code mis à Jour basé sur Roberts commentaire.
b.prototype = a.prototype
vous ne pouvez pas ajouter quoi que ce soit pour le prototype deb
sans affectera
.b.prototype = new a();
? Sinonb
est en fait pas hérité dea
mais est plutôt son alias/synonyme.Le sens de l'héritage en JavaScript n'est pas différent que dans n'importe quel langage orienté objet.
Hérité des enfants héritent de leurs parents au comportement (état de possibilités et de fonctionnalités). Ces enfants peuvent bien sûr ajouter d'autres comportements ou de remplacer l'existant. À cet égard, l'héritage en JavaScript est certainement pas différent de tout autre.
C'est à propos de la signification en tant que mots simples que possible. Cependant, vous ne demandez pas comment l'héritage est implémenté en JavaScript parce que ce serait une histoire complètement différente (et à la question). Dans ce cas, nous devrions expliquer les différences entre les classes et les prototypes (qui sont utilisés dans le JavaScript).
Simple, l'héritage signifie: "objets/classes héritent d'autres objets/classes" par le biais de prototypes
par exemple: