Was ist das Funktionsprinzip des neuen Operators in JavaScript? Wie ändert er den Rückgabewert des Konstruktors und worauf weist dies hin? Der folgende Artikel stellt Ihnen relevante Informationen darüber vor, was new() in Javascript tut. Freunde, die es benötigen, können darauf verweisen.
Vorwort
Wie andere Hochsprachen verfügt auch JavaScript über den neuen Operator. Wir wissen, dass der neue Operator zum Instanziieren von a verwendet wird Klasse. Dadurch wird ein Instanzobjekt im Speicher zugewiesen. Aber in JavaScript ist alles ein Objekt. Warum müssen wir new verwenden, um Objekte zu generieren? In diesem Artikel erfahren Sie mehr über das Geheimnis des Neuen in Javascript...
Um eine neue Instanz von Person zu erstellen, müssen Sie den Operator new verwenden.
Der Aufruf des Konstruktors auf diese Weise durchläuft tatsächlich die folgenden 4 Schritte:
(1) Erstellen Sie ein neues Objekt;
(2) Weisen Sie dem neuen Objekt den Gültigkeitsbereich des Konstruktors zu (damit dieser auf das neue Objekt verweist).
(3) Führen Sie den Code im Konstruktor aus (für dieses neue Objekt). Objekt fügt Attribute hinzu);
(4) Gibt ein neues Objekt zurück.
neuer Operator Nach der Einführung der oben genannten Grundkonzepte und dem Hinzufügen des neuen Operators können wir die traditionell orientierte Objektklasse vervollständigen + Neue Methode erstellt Objekte. In JavaScript nennen wir diese Methode Pseudoklassisch.
Basierend auf dem obigen Beispiel führen wir den folgenden Code aus
var obj = new Base();
Was ist das Ergebnis dieses Codes? In der Javascript-Engine lautet das erhaltene Objektmodell:
Was genau macht der neue Operator? Tatsächlich ist es sehr einfach, er macht nur drei Dinge.
var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj);
In der ersten Zeile erstellen wir ein leeres Objekt obj
In der zweiten Zeile ändern wir das _ davon leeres Objekt Das _proto__-Mitglied zeigt auf das Basisfunktionsobjekt Prototyp-Mitgliedsobjekt
In der dritten Zeile ersetzen wir den Zeiger this des Basisfunktionsobjekts durch obj und rufen dann die Basisfunktion auf, also wir Weisen Sie dem obj-Objekt einen Wert zu. Eine ID-Mitgliedsvariable. Der Wert dieser Mitgliedsvariablen ist „Basis“ in Bezug auf die Verwendung der Aufruffunktion.
Was wird der Effekt sein, wenn wir dem Base.prototype-Objekt einige Funktionen hinzufügen?
Base.prototype.toString = function() { return this.id; }
Wenn wir dann new zum Erstellen verwenden Ein neues Objekt. Gemäß den Eigenschaften von __proto__ kann auf die toString-Methode auch als Methode eines neuen Objekts zugegriffen werden. Wir sehen also:
Im Konstruktor legen wir die Mitgliedsvariablen der „Klasse“ fest (zum Beispiel: id im Beispiel) und im Konstruktorobjektprototyp legen wir die öffentlichen Methoden von fest die 'Klasse'. Daher werden die Auswirkungen von Klassen und Klasseninstanziierungen durch Funktionsobjekte, die eindeutigen __proto__- und Prototyp-Mitglieder von Javascript sowie den neuen Operator simuliert.
Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.
Verwandte Artikel:
Detaillierte Erläuterung der Vue-Komponenten und deren WiederverwendungVue verwendet vue-i18n, um den Implementierungscode für die Internationalisierung zu erreichen Infinite-Loading-Vue-Infinite-Loading-Methode in VueDas obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Funktion von new() in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!