Dieses Mal werden wir über Kombination, Prototyp, parasitäre und parasitäre Kombinationsvererbungsmethoden sprechen.
1. Kombinationsvererbung : Auch als pseudoklassischer Vererbung bezeichnet, bezieht sich eine Vererbungsmethode, die Prototypketten und geliehene Konstruktorentechnologien in ein Stück kombiniert.
Schauen wir uns ein Beispiel an:
Funktion SuperType (Name) {this.name = name; this.colors = ["rot", "blau", "grün"]; } SuperType.prototype.sayname = function () {alert (this.name); } function subtype (Name, Alter) {SuperType.call (this, Name); this.age = Alter; } // Vererbungsmethode subtyp.prototype = new SuperType (); Subtype.prototype.sayage = function () {alert (this.age); } var instance1 = neuer Subtyp ("Nicholas", 29); instance1.colors.push ("schwarz"); Alert (Instance1.Colors); // rot, blau, grün, schwarzinstanz1.sayname (); // Nicholas Instance1.Sayage (); // 29 var instance2 = neuer Subtyp ("Greg", 27); Alert (Instance2.Colors); // rot, blau, green instance2.sayname (); // Greg Instance2.Sayage (); // 27Die Kombinationsvererbung vermeidet die Mängel von Prototyp -Ketten und Ausleihenkonstruktoren und integriert deren Vorteile.
2. Prototyp -Vererbung
Die Vererbung kann ohne vordefinierte Konstruktoren implementiert werden, wodurch im Wesentlichen ein flaches Kopieren eines bestimmten Objekts durchgeführt wird. Die kopierte Kopie kann weiter geändert werden.
Funktionsobjekt (o) {Funktion f () {}; F.Prototyp = o; Neue f; } var person = {Name: "Nicholas", Freunde: ["Shelby", "Court", "van"]}; var otherperson = Object (Person); otherperson.name = "Greg"; otherperson.friends.push ("Rob"); var otherperson = Object (Person); otherperson.name = "linda"; otherperson.friends.push ("Barbie"); Alarm (Person.freunde); // Shelby, Hof, Van, Rob, Barbie3.. Parasitäre Erbschaft
Sehr ähnlich wie bei der Prototyperbanz, ist es auch, ein Objekt basierend auf einem Objekt oder einigen Informationen zu erstellen, dann das Objekt zu verbessern und schließlich das Objekt zurückzugeben. Um das durch das Kombinationserbranzmuster aufgrund mehrerer Aufrufe des Supertyp -Konstruktors verursachte Ineffizienzproblem zu lösen, kann dieses Muster mit der Kombinationsvererbung verwendet werden.
Funktionsobjekt (o) {Funktion f () {}; F.Prototyp = o; Neue f; } function createanother (ursprünglich) {var klone = Object (Original); Clone.sayhi = function () {alert ("hi"); }; Return Clone; } var person = {Name: "Nicholas", Freunde: ["Shelby", "Court", "van"]}; var otherperson = createanother (Person); otherperson.sayhi ();4. Parasitäre Kombinationserbranz
Die Kombination der Vorteile der parasitären Vererbung und der Kombinationserbanz ist der effektivste Weg, um eine grundlegende Vererbung des Typs zu erreichen.
// Erbprototyp -Funktion erweitert (Subtyp, SuperType) {Funktion f () {}; F.Prototype = SuperType.Prototype; var Prototype = neu f; Prototyp.Constructor = Subtyp; subtyp.Prototype = Prototyp; } // Superclass -Methode Funktion SuperType (Name) {this.name = name; this.colors = ["rot", "blau", "grün"]; } SuperType.Prototype.sayname = function () {return this.name; } // Subklassenmethode Funktion SuperType (Name) {this.name = name; this.colors = ["rot", "blau", "grün"]; } SuperType.Prototype.sayname = function () {return this.name; } // Subklassenmethode Funktion Subtyp (Name, Alter) {SuperType.call (this, Name); this.age = Alter; } // Prototype Extend (Subtyp, SuperType); // Subklassenmethode Subtype.Prototype.sayage = function () {return this.age; } var Instance1 = neuer Subtyp ("Shelby"); var instance2 = neuer Subtyp ("Court", 28); instance1.colors.push ('schwarz'); Alert (Instance1.Colors); // rot, blau, grün, schwarzen Alarm (Instance2.Colors); // rot, blau, grünalarm (Instance1 -Instanz von Subtyp); // True Alert (Instance1 Instance von SuperType); //WAHRDie Effizienz dieses Beispiels spiegelt sich darin wider, dass es den Supertyp -Konstruktor nur einmal aufruft, und vermeidet so, dass unnötige unnötige Eigenschaften für Subtyp.Prototype erstellt werden. Gleichzeitig kann die Prototypkette unverändert bleiben. Daher können Instanz und isprototypeof () auch normal verwendet werden. Entwickler glauben im Allgemeinen, dass parasitär kombinatorisches Erbe das idealste Vererbungsparadigma für Referenztypen ist.
Der obige Artikel JS objektorientierte Vererbung-eine detaillierte Erklärung der multiplen Kombinationsvererbung ist der gesamte Inhalt, 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.