Maison  >  Article  >  interface Web  >  Héritage parasite de l'héritage JS

Héritage parasite de l'héritage JS

小云云
小云云original
2018-03-07 10:50:582113parcourir

Il est facile de se sentir intimidé en entendant le terme « héritage parasitaire ». Qu'est-ce que c'est ? Ne vous inquiétez pas, cet article tentera d'expliquer cette méthode d'héritage en JS d'une manière facile à comprendre. J'espère que cela pourra aider tout le monde.

1. Un exemple

On définit d'abord une fonction vide, le paramètre formel est original, comme le suivant :

function createAnother(original){}

Créer un nouvel objet dans ce clone de fonction : ​​

function createAnother(original){
    var clone=Object.create(original);
}

Ajoutez l'attribut sayHi à l'objet clone. L'attribut sayHi est une fonction :

function createAnother(original){
    var clone=Object.create(original);    clone.sayHi=function(){
        alert('hi');
    };
}

Enfin, renvoyez l'objet clone :

function createAnother(original){
    var clone=Object.create(original);    clone.sayHi=function(){
        alert('hi');
    };    return clone;
}

Supposons que nous ayons un tel objet :

var person={
    name:'Nicholas',
    friends:['Shelby','Court','Van']
};

Passons l'objet ci-dessus comme paramètre réel à notre fonction à exécuter :

var anotherPerson=createAnother(person);
anotherPerson.sayHi();

Le résultat de l'opération est : une fenêtre « Salut » apparaîtra.

2. Point douteux : quelle est la différence entre cette méthode et l'héritage du prototype Object.create(o) ?

On voit que la fonction createAnother a cette phrase :

var clone=Object.create(original);

N'est-ce pas un héritage prototypique ?
En effet, la méthode d'héritage prototypique est bel et bien utilisée en interne, et l'objet final renvoyé est l'objet clone. Cependant, c'est encore un peu différent de l'héritage prototypique :
L'héritage prototypique hérite des propriétés de l'objet d'origine, et le nouvel objet n'a pas de nouvelles propriétés supplémentaires ; L'objet possède l'objet d'origine en plus des propriétés, et possède également des propriétés ajoutées en interne.
Dans l'exemple ci-dessus, par rapport à l'héritage prototypique, il existe des instructions clés supplémentaires :

    clone.sayHi=function(){
        alert('hi');
    };

Après la création d'une instance, l'instance aura cet attribut.

Recommandations associées :

Partage de plusieurs styles d'héritage js

Analyse du code source de l'héritage js Base class_js orienté Objet

Compétences code_javascript de mise en œuvre de l'héritage JS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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