5. Parasitäre Erbschaft
Ähnlich wie parasitäre Konstruktoren und Fabrikmuster erstellen Sie eine Funktion, die nur zur Kapitulation des Vererbungsverfahrens verwendet wird, der das Objekt intern in irgendeiner Weise verbessert und schließlich das Objekt zurückgibt.
Funktion createanother (ursprünglich) {var klone = Object.create (original); // Erstellen Sie ein neues Objekt, indem Sie den Funktion clone.sayhi = function () {// dieses Objekt in irgendeiner Weise erhöhen ("hi"); }; Return Clone; // dieses Objekt zurückgeben} var person = {name: "bob", Freunde: ["Shelby", "Court", "van"]}; var otherperson = createanother (Person); otherperson.sayhi ();Im obigen Beispiel empfängt die createanother -Funktion einen Parameter, dh das Objekt, das als Grundlage des neuen Objekts verwendet werden soll.
Andere Person ist ein neues Objekt, das basierend auf Person erstellt wurde. Das neue Objekt hat nicht nur alle Eigenschaften und Methoden der Person, sondern auch seine eigene Sayhi () -Methode.
6. Parasitäre Kombinationserbranz
Die Kombinationsvererbung ist das am häufigsten verwendete Vererbungsmuster in JS. Das größte Problem bei der Kombinationserbranz ist, dass der Konstruktor auf jeden Fall zweimal aufgerufen wird: einmal beim Erstellen eines Subtyp -Prototyps und der anderen Zeit innerhalb des Subtyp -Konstruktors.
Funktion SuperType (Name) {this.name = name; this.colors = ["Red", "Blue", "Green"];} SuperType.Prototype.sayname = function () {alert (this.name); // Der zweite Anruf bei SuperType () this.age = ay;} subtyp.Prototype = new SuperType (); // Der erste Anruf bei SuperType () subtyp.Prototype.sayage = function () {alert (this.age);};}Wenn der SuperType -Konstruktor zum ersten Mal aufgerufen wird, erhält Subtyp.Prototype zwei Eigenschaften: Name und Farben; Sie sind beide Instanzeigenschaften von SuperType, aber sie befinden sich jetzt im Subtyp -Prototyp.
Wenn der Subtyp -Konstruktor aufgerufen wird, wird der Supertyp -Konstruktor erneut aufgerufen, und diesmal werden der Instanzattributname und die Farben auf dem neuen Objekt erstellt.
Diese beiden Attribute blockieren also zwei gleichnamige Attribute im Prototyp.
Die parasitäre Kombinationsvererbe besteht darin, dieses Problem zu lösen.
Inherit -Attribute durch Kreditkonstruktoren;
Erben Sie die Methode durch die Prototypkette.
Es ist nicht erforderlich, den Supertyp -Konstruktor aufzurufen, um den Prototyp des Subtyps anzugeben.
Funktion InheritPrototype (Subtyp, SuperType) {var prototype = Object.create (SuperType.Prototype); // Objektprototyp erstellen.Constructor = subtyp; // Objekt subtyp erhöhen.Prototype = Prototyp; // Objekt} Funktion SuperType (Name) {this.name = name; this.colors = ["Red", "Blue", "Green"];} SuperType.Prototype.sayname = function () {alert (this.name); // Der zweite Aufruf von SuperType () this.age = älter;} inheritPrototype (subtyp, superType) subtyp.PrototypeDie InheritPrototyp -Funktion empfängt zwei Parameter: den Subtyp -Konstruktor und den Supertyp -Konstruktor.
1. Erstellen Sie eine Kopie des Supertyp -Prototyps.
2. Fügen Sie der erstellten Kopie Konstruktorattribut hinzu, um das Standard -Konstruktorattribut auszugleichen, das aufgrund des Umschreibens des Prototyps verloren gegangen ist.
3.. Weisen Sie dem Prototyp des Subtyps das neu erstellte Objekt (d. H. Kopieren) zu. Diese Methode ruft den Supertyp -Konstruktor nur einmal auf, und Instanz und isprototypeof () können auch normal verwendet werden.
In dem obigen Artikel handelt es sich kurz um JS Inheritance_Parasitic Inheritance & Parasitic Combination Inheritance, 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.