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
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 parentfunction 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
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!