Maison > interface Web > js tutoriel > Explication détaillée de l'utilisation de l'héritage combiné parasite dans js

Explication détaillée de l'utilisation de l'héritage combiné parasite dans js

php中世界最好的语言
Libérer: 2018-04-18 16:41:39
original
2182 Les gens l'ont consulté

Cette fois je vous apporte une explication détaillée de l'utilisation de l' héritage combiné parasite js, quelles sont les précautions lors de l'utilisation de l'héritage combiné parasite js, les suivantes sont pratiques cas, un Levez-vous et jetez un œil.

Héritage combiné :

function Person( uName ){
      this.skills = [ 'php', 'javascript' ];
      this.userName = uName;
    }
    Person.prototype.showUserName = function(){
      return this.userName;
    }
    function Teacher ( uName ){
      Person.call( this, uName );
    }
    Teacher.prototype = new Person();
    var oT1 = new Teacher( 'ghostwu' );
    oT1.skills.push( 'linux' );
    var oT2 = new Teacher( 'ghostwu' );
    console.log( oT2.skills ); //php,javascript
    console.log( oT2.showUserName() ); //ghostwu
Copier après la connexion

Il y a un inconvénient de l'héritage combiné. Le constructeur de la classe parent sera appelé deux fois. Ligne 11, définit le prototype de sous-classe

objet

(prototype) et appelle le premier Ligne 9, lors de l'instanciation de l'objet, appelez à nouveau

Le but du constructeur est de copier l'attribut

. La ligne 9 est définitivement indispensable. Le but de la ligne 11 est d'obtenir la méthode sur l'objet prototype de la classe parent (prototype). toutes les autres méthodes Est-ce possible ? Pouvons-nous obtenir les méthodes sur l’objet prototype de la classe parent sans instancier le constructeur de la classe parent ? Bien sûr, on peut utiliser l'héritage parasite pour récupérer les méthodes sur l'objet prototype de la classe parent

En fait, pour parler franchement, l'héritage combiné parasite est un constructeur emprunté + un objet prototype équivalent à une copie superficielle de la classe parent
function Person( uName ){
      this.skills = [ 'php', 'javascript' ];
      this.userName = uName;
    }
    Person.prototype.showUserName = function(){
      return this.userName;
    }
    function Teacher ( uName ){
      Person.call( this, uName );
    }
    function object( o ){
      var G = function(){};
      G.prototype = o;
      return new G();
    }
    function inheritPrototype( subObj, superObj ){
      var proObj = object( superObj.prototype ); //复制父类superObj的原型对象
      proObj.constructor = subObj; //constructor指向子类构造函数
      subObj.prototype = proObj; //再把这个对象给子类的原型对象
    }
    inheritPrototype( Teacher, Person );
    var oT1 = new Teacher( 'ghostwu' );
    oT1.skills.push( 'linux' );
    var oT2 = new Teacher( 'ghostwu' );
    console.log( oT2.skills ); //php,javascript
    console.log( oT2.showUserName() ); //ghostwu
Copier après la connexion

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour plus d'informations intéressantes, veuillez prêter attention aux autres sujets connexes dans l'article du site Web PHP chinois !

Lecture recommandée :



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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal