⚠ 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
Denken Sie im Großen und im Kleinen und lenken Si...
Beispiele für die MySQL-Verschlüsselung und -Ents...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis Vorwort Fehlergrenze Jenseits ...
Zu den MySQL-Variablen zählen Systemvariablen und...
In diesem Artikel wird der spezifische Code von V...
Inhaltsverzeichnis Über Maxwell Konfiguration und...
Inhaltsverzeichnis 1. Reagieren.FC<> 2. Kla...
Hexadezimalcodetabelle verschiedener Farben [Teil ...
MySQL 5.7.8 führte das JSON-Feld ein. Dieser Feld...
Inhaltsverzeichnis Vorwort Was ist DrawCall Welch...
Definition und Verwendung von „deaktiviert“ Das d...
Inhaltsverzeichnis Vorwort Erstellungsschritte Er...
Der Befehl „Explain“ ist der erste empfohlene Bef...
Ich erinnere mich, dass es vor ein paar Jahren in...