⚠ Voraussetzungen:
1 Einführung in den neuen Operator MDN-Dokumentation: Der Klasse Person { Konstruktor(Name) { dieser.name = Name; } } //Eine Instanz eines benutzerdefinierten Objekttyps erstellen const person = new Person('Xiao Ming') //Erstellen Sie eine Instanz eines integrierten Objekts mit einem Konstruktor const date = new Date() Die Rolle von new: Erstellen Sie eine Instanz eines Objekts 2. Was hat „Neu“ bewirkt? Oben wurde erwähnt, dass die Funktion von Nehmen wir als Beispiel new Person(). Bei der Ausführung passieren die folgenden Dinge: Erstellen Sie ein leeres einfaches JS-Objekt const obj = {} Fügen Sie diesem Objekt das Attribut obj.__proto__ = Person.prototyp Ruft den Konstruktor Person.apply(obj) Wenn der Konstruktor nicht explizit ein Objekt zurückgibt, wird das neu erstellte Objekt zurückgegeben, d. h. 3 Simulieren Sie die Implementierung des neuen Operators Wie oben erwähnt, führt der const _new = Funktion(Konstruktor, ...Argumente) { const obj = {} obj.__proto__ = Konstruktor.Prototyp const res = Konstruktor.anwenden(obj, args) // Dieser Schritt wird im Detail unter „Ergänzung“ erklärt return res instanceof Object ? res : obj } Der Code ist sehr einfach, folgen Sie einfach den obigen 4 Schritten und schreiben Sie ihn Schritt für Schritt 4 Ergänzung Mit dieser Methode können wir die Schritte 1 und 2 kombinieren. const obj = Objekt.erstellen(Konstruktor.Prototyp) //Entspricht const obj = {} obj.__proto__ = Konstruktor.Prototyp Erklären Sie für Schritt 4
Funktion Person() { ... Rückgabe 1 } Wenn der Konstruktor explizit ein Objekt zurückgibt, etwa Dann ist Funktion Person() { // Funktionen sind auch Objekte return function() {} } Die letzte Codezeile unserer _new-Funktion lautet also: Gibt eine res-Instanz des Objekts zurück? res: obj
class Animal { ...}_new(Animal) // Meldet einen Fehler: Der Klassenkonstruktor Animal kann nicht ohne „new“ aufgerufen werden // Klassen können nur mit „new“ erstellt werden Dies ist das Ende dieses Artikels über die handschriftliche Implementierung von Neuem in JS. Weitere relevante neue Inhalte in JS finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Zusammenfassung der Unterschiede zwischen HTML, SHHTML und XHTML
>>: Detaillierte Erläuterung der Speicherverwaltung der MySQL InnoDB-Speicher-Engine
Dieser Artikel stellt hauptsächlich die Implement...
Diese Datenbankabfrageanweisung ist eine von 50 D...
Die Vorbereitung auf die Abschlussprüfungen im le...
1- Dropdown-Auswahlfelder gestalten – Ändern Sie ...
Vorwort Die MySQL-Berechtigungstabelle wird beim ...
Inhaltsverzeichnis Vorwort Installation und Verwe...
Während der Olympischen Spiele wird IE 8 Beta 2 ve...
Hintergrund Als ich heute mit anderen Projektteam...
Detaillierte Analyse der Iframe-Nutzung <iframe...
Überblick Wenn beim Zugriff auf einen Onlinediens...
Inhaltsverzeichnis Vorwort Start Vorwort Die Stan...
Wie kann ich die Bildlaufleisten ausblenden und t...
Inhaltsverzeichnis Zusammenfassung Umgebung und W...
Die Docker-Image-ID ist eindeutig und kann ein Im...
Installieren Sie mysql5.7 unter Win. Zu Ihrer Inf...