Heim >Web-Frontend >js-Tutorial >Detaillierte Erklärung der zugrunde liegenden Logik von new() von JS

Detaillierte Erklärung der zugrunde liegenden Logik von new() von JS

php中世界最好的语言
php中世界最好的语言Original
2018-05-26 11:19:052200Durchsuche

Dieses Mal werde ich Ihnen eine detaillierte Erklärung der zugrunde liegenden Logik von JS's new() geben. Was sind die Vorsichtsmaßnahmen bei der Verwendung von JS's new()?

Vorwort

Wie andere Hochsprachen hat auch Javascript einen neuen Operator, Wir wissen, dass der neue Operator verwendet wird, um eine Klasse zu instanziieren und ein Instanzobjekt im Speicher zuzuweisen. 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 führt tatsächlich zu den folgenden 4 Schritten:

(1) Erstellen eines neuen Objekts;

(2) Weisen Sie dem neuen Objekt den Bereich des Konstruktors zu (damit dieser auf das neue Objekt verweist).

(3) Führen Sie den Code im Konstruktor aus (fügen Sie dem neuen Objekt 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 das traditionelle

Objekt vervollständigen -orientierte -Klasse + 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? Das Objektmodell, das wir in der Javascript-Engine sehen, ist:

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 ersten Zeile erstellen wir ein leeres Objekt obj

In der zweiten Zeile verweisen wir das Proto-Mitglied dieses leeren Objekts 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. Daher weisen wir dem obj-Objekt den Wert „base“ zu. Bezüglich der Verwendung der Anruffunktion.

Was wird der Effekt sein, wenn wir dem Base.prototype-Objekt einige Funktionen hinzufügen?

Zum Beispiel lautet der Code wie folgt:

Base.prototype.toString = function() {
 return this.id;
}
Wenn wir dann new verwenden, um ein neues Objekt gemäß den Eigenschaften von Proto zu erstellen, kann dies mit der toString-Methode geschehen auch als Methode für neue Objekte verwendet 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 der „Klasse“ fest '. Daher werden die Auswirkungen von Klassen und Klasseninstanziierung durch Funktionsobjekte und Javascript-spezifische Proto- und Prototyp-Mitglieder sowie neue Operatoren simuliert.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Wie man Vue-Axios zum Abfangen von Anfragen verwendet

Wie man Vue2 bedient, um den Warenkorb zu implementieren und Adressauswahl

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der zugrunde liegenden Logik von new() von JS. 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