⚠ 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
Microsoft IIS IIS (Internet Information Server) i...
Sie können Docker installieren und einfache Vorgä...
Inhaltsverzeichnis 1. Anwendungslebenszyklus 2. S...
1. Änderungen in der Standard-Speicher-Engine von...
Heute habe ich den Mauszoom-Effekt auf der Vorders...
Ich habe vor Kurzem einen Tencent-Cloud-Server ge...
Vorwort NFS (Network File System) bedeutet Netzwe...
VirtualBox ist ein kostenloses Open Source-Virtua...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 1. Einführung in Nginx 2. Aufb...
Inhaltsverzeichnis 1. CSS-Stile direkt in HTML-Ta...
Systemhilfe anzeigen help contents mysql> Hilf...
1. HTML-Code Code kopieren Der Code lautet wie fo...
1. Umgebungsbeschreibung (1) CentOS-7-x86_64, Ker...
Dies ist mein erster Blogbeitrag. Aus Zeitgründen...