Tout d'abord, examinons l'héritage non dans le flux: méthode d'héritage d'instance.
Je ne dis pas tellement de non-sens. Puisqu'il est hérité de non-marin, il ne doit pas être utilisé fréquemment. Puisqu'il n'est pas utilisé fréquemment et existe toujours, il n'y a qu'un seul facteur qu'il est utilisé dans des occasions spécifiques. La méthode d'héritage d'instance est principalement utilisée pour l'héritage des objets centraux, et est également le seul moyen de résoudre l'héritage des objets centraux jusqu'à présent.
L'héritage des objets centraux a une certaine valeur. Par exemple, l'objet d'erreur. Notre entreprise peut avoir à implémenter une classe d'erreur pour simplifier le développement futur. Pour le moment, je dois utiliser la méthode d'héritage d'instance pour hériter de l'erreur.
Le code est le suivant:
La copie de code est la suivante:
fonction étendue (MES)
{
var instance = nouvelle erreur (MES);
instance.newerror = function () {
alert ("Votre erreur est" + MES);
}
retour d'instance;
}
Ok, testez-le:
La copie de code est la suivante:
var e = new extendingError ("Votre nombre est inférieur à un");
e.newerror ();
alerte (e.toString ());
Les résultats nous satisfont:
OK, sans dire beaucoup de bêtises, il s'agit d'une méthode d'héritage sans flux de flux, qui n'est essentiellement utilisée que pour l'héritage des objets centraux, n'oubliez pas de lui!
Ensuite, jetons un coup d'œil au deuxième héritage sans flux: Copiez la méthode des successions.
Comme son nom l'indique, l'héritage de copie signifie l'héritage des objets par la copie. Que dois-je copier? Il est évident que ce sont les propriétés et les méthodes de l'objet. Vous souvenez-vous encore qu'en JavaScript, la classe est en fait un hashtable? Si vous ne vous en souvenez pas, revenez en arrière et passez en revue les bases. Je peux écrire un article sur les objets JavaScript dans un moment.
Il sera plus facile de comprendre cela, il suffit de regarder le code:
Écrivez d'abord une méthode d'étendue:
La copie de code est la suivante:
Function.prototype.extend = function () {
pour (var pro en obj)
{
// Ceci est en fait une copie complète des propriétés et des méthodes de la classe parentale
this.prototype [pro] = obj [pro];
}
}
Ok, écrivez un morceau de code pour voir comment l'utiliser:
La copie de code est la suivante:
fonction Animal ()
{}
fonction des gens ()
{}
People.extend (nouvel animal ())
{}
Une personne exigeante peut voir en un coup d'œil que les inconvénients de cette méthode sont trop évidents:
Lors de la copie des méthodes d'attribut d'un objet un par un, la réflexion est réellement utilisée. Je ne dirai pas grand-chose sur les dommages à l'efficacité de la réflexion.
Comme l'héritage du prototype, l'objet parent doit être initialisé. Lorsque la relation d'héritage est déterminée, mais que les paramètres sont encore incertains, il ne peut pas être joué!
En bref, cette méthode n'est généralement pas utilisée.
D'accord, parlons de quelque chose de couramment utilisé. Héritage mixte!
Ceci est basé sur deux méthodes d'héritage grand public. En comparant les deux méthodes d'héritage, nous pouvons constater que les avantages et les inconvénients des deux méthodes d'héritage sont complémentaires, il est donc facile de les mélanger ensemble!
La copie de code est la suivante:
fonction des gens (nom)
{
this.name = name;
this.sayName = function () {
alert ("mon nom est" + nom);
}
}
Fonction Girl (nom, âge)
{
// Héritage de construction
this.fher = les gens;
this.fère (nom);
Supprimer ce que le père;
this.introduce = function () {
alert ("mon nom est" + nom + ". Je suis" + âge);
}
}
// Héritage prototype
Girl.prototype = new People ();
D'accord, un mélange des deux méthodes, voyons maintenant si le problème a été résolu?
var g = nouvelle fille ("Xuan", 22);
alerte (instance de personnes);
g.sayName ();
g.introduce ();
Le test passé!
Il s'agit d'une solution relativement parfaite, mais elle augmente la complexité du code, donc la solution spécifique dépend du choix de chacun dans la pratique.
C'est toutes les façons de jouer avec JavaScript. Tout le monde est le bienvenu pour continuer à suivre mes autres articles.