Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erklärung von new() in Javascript

小云云
Freigeben: 2018-03-30 09:24:30
Original
1835 Leute haben es durchsucht

Wie andere Hochsprachen verfügt auch JavaScript über den neuen Operator. Wir wissen, dass der neue Operator zum Instanziieren einer Klasse und zum Zuweisen eines Instanzobjekts im Speicher verwendet wird. 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 neuen Operator 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 orientierten Objekte vervollständigen Verwenden der Klasse + der neuen Methode des Objekts. In JavaScript nennen wir diese Methode Pseudoklassisch.


Basierend auf dem obigen Beispiel führen wir den folgenden Code aus


Was das Ergebnis dieses Codes ist, sehen wir im Javascript-Engine Das Objektmodell ist:
var obj = new Base();
Nach dem Login kopieren


Was genau macht der neue Operator? Es ist eigentlich ganz einfach, er macht drei Dinge.


In der ersten Zeile erstellen wir ein leeres Objekt obj
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
Nach dem Login kopieren


In der zweiten Zeile ändern wir das __proto_ dieses leeren Objekts object Das _-Mitglied zeigt auf das Prototyp-Mitgliedsobjekt des Basisfunktionsobjekts


In der dritten Zeile ersetzen wir den Zeiger this des Basisfunktionsobjekts durch obj und rufen dann die Basisfunktion auf, also weisen wir zu Ein Wert für die obj-Objekt-ID-Mitgliedsvariable. Der Wert dieser Mitgliedsvariablen ist „base“ 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:


Wenn wir dann new verwenden, um einen zu erstellen Neues Objekt, entsprechend den Eigenschaften von __proto__ kann auf die toString-Methode auch als Methode für neue Objekte zugegriffen werden. Wir sehen also:
Base.prototype.toString = function() {
 return this.id;
}
Nach dem Login kopieren


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 Klasseninstanziierung durch Funktionsobjekte, die eindeutigen __proto__- und Prototyp-Mitglieder von Javascript sowie den neuen Operator simuliert.

Verwandte Empfehlungen:


Detaillierte Erklärung des neuen Operators in JavaScript

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von new() in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage