⚠ 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
Vue-Router-Übergänge sind eine schnelle und einfa...
Inhaltsverzeichnis Vorwort Endlosschleife in For-...
Es ist sehr mühsam, eine virtuelle Maschine einzu...
Dieser Artikel beschreibt anhand von Beispielen d...
【Frage】 Wir haben einen HP-Server. Wenn die SSD e...
Es gibt ein solches Szenario: ein kreisförmiger C...
Dieser Artikel erläutert anhand eines konkreten B...
1. Überlaufinhalt-Überlaufeinstellungen (festlegen...
Inhaltsverzeichnis Versionshinweise Erstellen ein...
Inhaltsverzeichnis 1. Strukturelle Anweisungen Mo...
MySQL8.0.12-Installationstutorial, mit allen teil...
IDEA ist das am häufigsten verwendete Entwicklung...
Die MySQL-Transaktionsunterstützung ist nicht an ...
max_allowed_packet ist ein Parameter in MySQL, de...
Fügen Sie den erforderlichen Links Inline-Stile hi...