Maison >interface Web >js tutoriel >Javascript joue avec l'héritage (3)_compétences javascript

Javascript joue avec l'héritage (3)_compétences javascript

WBOY
WBOYoriginal
2016-05-16 16:49:131135parcourir

Tout d’abord, examinons l’héritage non traditionnel : l’héritage d’instance.

Je ne dirai pas tant de bêtises. Puisqu'il s'agit d'un héritage non traditionnel, il ne doit pas être utilisé couramment. Puisqu'il existe toujours s'il n'est pas couramment utilisé, il n'est utilisé que dans des situations spécifiques. . La méthode d'héritage d'instance est principalement utilisée pour l'héritage des objets principaux, et c'est également le seul moyen de résoudre l'héritage des objets principaux jusqu'à présent.

L'héritage des objets principaux a une certaine valeur, comme l'objet Error. Notre entreprise devra peut-être implémenter nous-mêmes une classe Error pour simplifier le développement futur. À ce stade, j'utiliserai la méthode d'héritage d'instance pour hériter d'Erreur.

Le code est le suivant :

Copier le code Le code est le suivant :

function ExtendingError(mes)
{
var instance=new Error(mes);
instance.NewError=function(){
alert("Votre erreur est " mes);
}
return instance;
}

D'accord, testons :

Copier le code Le code est le suivant :

var e=new ExtendingError("Votre numéro est inférieur à un");
e.NewError();
alert(e.toString());

Les résultats nous satisfont :

D'accord, sans plus tarder, il s'agit d'une méthode d'héritage non traditionnelle. Elle est essentiellement utilisée uniquement pour l'héritage des objets principaux.
Jetons un coup d'œil à l'héritage non traditionnel 2 : méthode d'héritage par copie.

Comme son nom l'indique, l'héritage de copie est l'héritage d'objets par copie. Qu'est-ce qui est copié ? Évidemment, ce sont les propriétés et les méthodes de l'objet. Vous souvenez-vous qu'en Javascript, une classe est en fait une Hashtable ? Si vous ne vous en souvenez pas, revenez en arrière et révisez les bases. J'écrirai peut-être un article sur les objets Javascript dans un moment.
Ce sera facile à gérer une fois que vous aurez compris cela, il suffit de regarder le code :
Écrivez d'abord une méthode Extend :

Copier le code Le code est le suivant :

Function.prototype.Extend=function() {
for(var pro in obj)
{
//Cela copie en fait complètement les attributs et les méthodes de la classe parent
this.prototype[pro]=obj[pro];
}
}

D'accord, écrivons du code pour voir comment l'utiliser :

Copier le code Le code est le suivant :

fonction Animal()
{ }
function Personnes()
{ }
People.Extend(new Animal())
{ }

Une personne avisée peut voir d'un coup d'œil que les défauts de cette méthode sont trop évidents :
Lors de la copie des méthodes d'attributs de l'objet une par une, ce qui est réellement utilisé est la réflexion. Je n'entrerai pas dans les détails sur la. dommages que la réflexion cause à l’efficacité.
Semblable à l'héritage prototypique, l'objet de classe parent doit être initialisé lorsque la relation d'héritage est déterminée, mais que les paramètres ne sont pas encore certains, cela ne fonctionnera pas !

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 traditionnelles. En comparant les deux méthodes d'héritage, on constate que les avantages et les inconvénients des deux méthodes d'héritage sont complémentaires, donc c'est facile à gérer, mélangeons-les ensemble !

Copier le code Le code est le suivant :

fonction Personnes(nom)
{
this.name=name;
this.SayName=function(){
alert("Je m'appelle " name);
}
}
function Girl(nom,âge )
{
//Construire l'héritage
this.father=People;
this.father(name);
supprimer this.father;
this.Introduce=function(){
alert("Je m'appelle " nom ". J'ai" âge);
}
}
//Héritage prototypique
Girl.prototype=new People();
OK , deux En mélangeant ces méthodes, voyons maintenant, le problème est-il résolu ?
var g=new Girl("Xuan",22);
alert(g instanceof People);
g.SayName();
g.Introduce();

Test réussi !

C'est 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.

Voici les façons de jouer avec l'héritage en Javascript. Vous pouvez continuer à prêter attention à mes autres articles.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn