Heim >Web-Frontend >js-Tutorial >Detaillierte Erklärung der Funktion von new() in Javascript

Detaillierte Erklärung der Funktion von new() in Javascript

亚连
亚连Original
2018-05-28 14:25:211480Durchsuche

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?


Der Code lautet beispielsweise wie folgt:

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 Wiederverwendung


Vue verwendet vue-i18n, um den Implementierungscode für die Internationalisierung zu erreichen


Infinite-Loading-Vue-Infinite-Loading-Methode in Vue


Das 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn