Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Verwendung der parasitären kombinierten Vererbung in js
Dieses Mal erkläre ich Ihnen ausführlich die Verwendung von js parasitärer kombinierter Vererbung, was sind die Vorsichtsmaßnahmen bei der Verwendung von js parasitärer kombinierter Vererbung, das Folgende ist praktisch Fälle, einer Steh auf und schau es dir an.
Kombinationsvererbung:
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
Es gibt einen Nachteil der kombinierten Vererbung. Der Konstruktor der übergeordneten Klasse wird zweimal aufgerufen
Zeile 11 legt das Unterklassen-Prototyp Objekt (Prototyp) fest und ruft das erste
auf Rufen Sie in Zeile 9 beim Instanziieren des Objekts erneut
auf Der Zweck des Konstruktors besteht darin, das -Attribut zu kopieren. Der Zweck von Zeile 11 besteht darin, die Methode auf dem Prototypobjekt (Prototyp) zu erhalten alle anderen Methoden
Ist das möglich? Können wir die Methoden für das Prototypobjekt der übergeordneten Klasse abrufen, ohne den Konstruktor der übergeordneten Klasse zu instanziieren? Natürlich können wir parasitäre Vererbung verwenden, um die Methoden für das Prototypobjekt der übergeordneten Klasse abzurufen
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
Tatsächlich handelt es sich bei der parasitären kombinierten Vererbung um einen geliehenen Konstruktor + ein Prototypobjekt, das einer flachen Kopie der übergeordneten Klasse entspricht.
Ich glaube, Sie haben die Methode gemeistert, nachdem Sie den Fall in diesem Artikel gelesen haben Weitere spannende Informationen finden Sie in den anderen verwandten Themen im Artikel zur chinesischen PHP-Website!
Empfohlene Lektüre:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der parasitären kombinierten Vererbung in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!