Maison  >  Article  >  interface Web  >  Introduction à plusieurs méthodes d'héritage prototypique

Introduction à plusieurs méthodes d'héritage prototypique

一个新手
一个新手original
2017-10-16 09:16:461352parcourir

Héritage prototypique

Parent :

    function Parent(name){
        this.name=name;
    }
    Parent.prototype.sayHello=function(){
        console.log("Hello,"+this.name);
    }
  1. Héritage de chaîne prototypique

    function Kid(){};
    Kid.prototype=new Parent("who");
    
    var k=new Kid();
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who

    Inconvénients : Impossible de passer les paramètres au parent lors de la création d'une instance

  2. Héritage de construction

    function Kid(name){
        Parent.call(this,name);
    };
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //error

    Inconvénients : Impossible d'obtenir le Attribut de chaîne du prototype parent

  3. Héritage d'instance

    function Kid(name){
        var p=new Parent(name);
        return p;
    };
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who

    Inconvénients : L'instance est une instance du parent

  4. Héritage de copie

    function Kid(name){
        var p=new Parent(name);
        for(var item in p){
            Kid.prototype[item]=p[item];
        }
    }
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who

    Inconvénients : Prenant trop de mémoire

  5. Héritage combiné

    function Kid(name){
        Parent.call(this,name);
    }
    Kid.prototype=new Parent();
    
    var k=new Kid("who");
    console.log(k.name); //who
    console.log(k.sayHello()); //Hello,who

    Inconvénients :Le constructeur de la classe parent est appelé deux fois

  6. Héritage des combinaisons parasites

    function Kid(name){
        Parent.call(this,name);
    }
    (function(){
        var p=function(){};
        p.prototype=Parent.prototype;
        Kid.prototype=new p();
    })()

    Inconvénients : L'écriture la méthode est plus lourde

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