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
var obj = new Base();
Was genau macht der neue Operator? Es ist eigentlich ganz einfach, er macht drei Dinge.
var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj);
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?
Base.prototype.toString = function() { return this.id; }
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:
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!