Wenn wir ein Objekt mit einem Konstruktor erstellen, werden seine Eigenschaften hinzugefügt. Und die dazu hinzugefügten Attribute ändern sich nicht tatsächlich mit der Entität, und zu diesem Zeitpunkt erscheint unser Ansatz ineffizient. Zum Beispiel:
Funktion ihr () {this.name = 'Anna';}Dies bedeutet, dass wir jedes Mal, wenn wir ein Instanzobjekt mit neuem HOR () erstellen, ein brandneues Namensattribut generieren und einen eigenen Speicherplatz im Speicher haben, der zum Attribut gehört. Tatsächlich können wir dem Prototyp das Namensattribut hinzufügen, damit alle Instanzen dieses Namensattribut teilen können:
Funktion ihr () {} her.prototype.name = 'Anna';Auf diese Weise ist das Namensattribut nicht mehr eine private Eigenschaft des neuen Objekts, sondern wird dem Prototyp des Objekts nicht mehr eine private Eigenschaft des neuen Objekts hinzugefügt. Obwohl dieser Ansatz sehr effizient ist, gilt er auch für die unveränderlichen Eigenschaften im Instanzobjekt. Das ist sicher. Wenn Sie diese Eigenschaft ändern, wird das Attribut aller erstellten neuen Objekte geändert. Das wollen wir nicht ~~~. Die öffentlichen Eigenschaften eines Objekts sind besonders für diesen Ansatz geeignet.
Lassen Sie uns hier ein früheres Beispiel verbessern:
Funktion ihr () {}; her.prototype.name = 'Anna'; her.prototype.toString = function () {return this.name;} Funktion his () {}; his.Prototype = new sie (); his.Prototype.Constructor = his; his.prototype.sex = 'Frauen';Wie Sie sehen können, vervollständigen wir normalerweise die Konstruktion relevanter Vererbung, bevor wir das Prototyp -Objekt erweitern, andernfalls können die nachfolgenden neuen Attributmethoden in His.Prototyp die ererbten Dinge löschen.
Funktion Kind (f, m) {this.eat = f; this.don = m;} child.Prototype = new his (); child.prototype.constructor = child.prototypWie Sie sehen können, besteht der Unterschied zwischen dem Anruf tostring () nur die kleine Anzahl von Operationen hinter den Kulissen. Der Hauptunterschied sind Eigenschaften, die Sucharbeiten von Methoden werden in ihr mehr auftreten.
Die obige JavaScript -Implementierungsmethode zur Migration der gemeinsam genutzten Attribute in den Prototyp 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.