2. Ausleihen Sie den Konstruktor aus
Um das Problem zu lösen, das durch Einbeziehung von Referenztypwerten in den Prototyp verursacht wird, verwenden wir eine Technik namens Borrow -Konstruktor -Diebstahl (auch geschmiedete Objekte oder klassische Vererbung).
Die Grundidee dieser Technik: Rufen Sie den Supertyp -Konstruktor innerhalb des Subklass -Konstruktors an.
Der Konstruktor kann mithilfe der Methoden Apply () und CALL () auf das neu erstellte Subcass -Objekt ausgeführt werden.
function SuperType () {this.colors = ["rot", "blau", "grün"];} Funktion subtyp () {// erbte SuperType SuperType.Apply (this);} var instance1 = new subype (); Instance1.colors.push ("schwarz"); // rot, blau, grün, Blackvar Instance2 = new Subtype (); alert (Instance2.Colors); // rot, blau, grünIm obigen Beispiel wird der Supertyp -Konstruktor tatsächlich in der Umgebung der neu erstellten Subtyp -Instanz (Instance1 Instance2) aufgerufen. Auf diese Weise werden alle in der Funktion SuperType () definierten Objektinitialisierungscodes im neuen Subtyp -Objekt ausgeführt. So hat jede Instanz des Subtyps eine eigene Kopie des Colors -Attributs.
Parameter übergeben
Bei Prototyp -Ketten hat die Kreditaufbauten von Kreditaufnahmen einen großen Vorteil, dh Sie können Parameter in Supertyp -Konstruktoren in Subtypkonstruktoren übergeben.
Funktion SuperType (Name) {this.name = name;} Funktion subtype () {SuperType.call (this, "bob"); this.age = 18;} var Instance1 = neuer Subtyp (); alert (Instance1.age); //18Art(instance1.Name); //BobProblem der Ausleihekonstruktoren:
Methoden sind alle im Konstruktor definiert, daher gibt es keine Möglichkeit, über die Wiederverwendung von Funktionen zu sprechen. Darüber hinaus sind in Supertyp -Prototypen definierte Methoden auch für Subtypen unsichtbar.
3. Kombinationserbranz
Die Kombinationsvererbung, die manchmal als pseudoklassische Vererbung bezeichnet wird, bezieht sich auf die Kombination von Prototypketten und Kreditkonstruktor-Techniken. Dies ist eine Art der Vererbung, die die Stärken beider spielt.
Verwenden Sie Prototypketten, um die Vererbung von Prototypeigenschaften und -methoden zu implementieren.
Die Vererbung von Instanzeigenschaften wird durch Kreditkonstruktoren erreicht.
Auf diese Weise wird die Wiederverwendung von Funktionen durch Definieren von Methoden im Prototyp erreicht und kann auch sicherstellen, dass jede Instanz ihre eigenen Attribute hat.
Funktion SuperType (Name) {this.name = name; this.colors = ["rot", "blau", "grün"];} supertype.prototype.sayname = function () {alert (this.name); this.age = Age;} // Vererbungsmethode subtyp.Prototype = new SuperType (); Subtype.prototype.sayage = function () {alert (this.age);} var instance1 = new subtyp ("bob", 22); Instance1.colors.push ("schwarz"); alert (Instance1.Colors); //red,Blue,Green,BlALLENStance1.SayName (); //Bobinstance1.sayage (); // 22var Instance2 = neuer Subtyp ("Alice", 21); alert (Instance2.Colors); //red,Blue,GreenInstance2.SayName (); //Aliceinstance2.Sayage (); // 21In diesem Beispiel definiert der Supertyp -Konstruktor zwei Eigenschaften: Name und Farben. Der Prototyp von SuperType definiert eine Methode Sayname ().
Der Subtyp -Konstruktor übergibt beim Aufrufen des Supertyp -Konstruktors den Namen Parameter und definiert sein eigenes Attributalter. Dann die Instanz von SuperType dem Prototyp des Subtyps zuweisen. Die Methode Sayage () ist in diesem Prototyp definiert.
Dies ermöglicht es zwei verschiedenen Subtyp -Instanzen, ihre eigenen Eigenschaften zu haben - einschließlich Farbenattributen, und dieselbe Methode kann verwendet werden.
In dem obigen Artikel geht kurz über JS Inheritance_Borrow -Konstrukteure und Kombinations -Erbschaft in den Inhalten, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.