KonstruktorBevor Sie etwas Neues einführen, müssen Sie wissen, was ein Konstruktor ist. Es gibt keinen Unterschied in der Schreibweise zwischen einem Konstruktor und einer normalen Funktion. Wenn eine Funktion über new Fun() aufgerufen wird, wird sie als Konstruktor bezeichnet, und der erste Buchstabe des Konstruktors wird normalerweise groß geschrieben. Funktion Benutzer(Name) { dieser.name = Name; } lass u = neuer Benutzer('leo'); Hier ist User der Konstruktor. Natürlich können Sie auch User() direkt aufrufen, aber dadurch wird keine Instanz erstellt. Im nicht strikten Modus wird das Namensattribut an das Fenster gehängt. neuer OperatorWas also genau macht der neue Operator, um eine Instanz zu erstellen? Der neue Operator erstellt eine Instanz eines benutzerdefinierten Objekttyps oder eine Instanz eines integrierten Objekts, das über einen Konstruktor verfügt. Das neue Schlüsselwort führt die folgenden Operationen aus: 1. Erstellen Sie ein leeres, einfaches JavaScript-Objekt (d. h. **{}**); 2. Verknüpfen Sie das Objekt (d. h. legen Sie den Konstruktor des Objekts fest) mit einem anderen Objekt. 3. Verwenden Sie das in Schritt 1 neu erstellte Objekt als Kontext für **dieses**; 4. Wenn die Funktion kein Objekt zurückgibt, gibt sie **dieses** zurück. Das obige Zitat stammt vom neuen Betreiber - MDN Vielleicht verstehst du die Schritte 2 und 4 nicht so gut, deshalb fasse ich sie hier noch einmal zusammen: 1. Erstellen Sie ein leeres Objekt u = {} 2. Prototyp binden, u.__proto__ = User.prototype 3. Rufen Sie die Funktion User() auf und übergeben Sie das leere Objekt u als User.call(u). 4. Wenn die Funktion User() nach der Ausführung einen Objekttyp zurückgibt, geben Sie diese Variable zurück, andernfalls geben Sie diese zurück. Hinweis: Wenn der Konstruktor einen Basistypwert zurückgibt, wird er davon nicht betroffen sein und trotzdem diese zurückgeben Implementieren Sie selbst ein NeuesNachdem wir das Prinzip des neuen Operators kennen, implementieren wir selbst eine FakeNew-Funktion. Funktion FakeNew() { lass obj = {}; //Konvertiere die arrayähnlichen Argumente in ein Array und verschiebe den ersten Parameter, der der Konstruktor ist, let constructor = [].shift.apply(arguments); // Prototyp binden obj.__proto__ = Konstruktor.prototyp; // Rufen Sie den Konstruktor auf und übergeben Sie obj wie folgt: let res = Constructor.apply(obj, arguments); // zurückgeben return typeof res === 'Objekt'? res: obj; } Funktion Benutzer(Name) { dieser.name = Name; } Benutzer.prototype.getName = Funktion() { gib diesen Namen zurück; } lass u = FakeNew(Benutzer, 'leo'); konsole.log(u); console.log(u.getName()); Die Kommentare der entsprechenden Schlüsselschritte wurden dem Code beigefügt, sodass wir einen neuen Vorgang implementiert haben. Ich glaube, dass Sie ein klareres Gefühl haben werden, wenn Sie in Zukunft etwas Neues sehen. Oben finden Sie Einzelheiten dazu, wie Sie den neuen Operator von JavaScript selbst implementieren können. Weitere Informationen zum neuen Operator von JavaScript finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Beispiel für die Implementierung der Hochverfügbarkeit von Keepalived+Nginx
>>: Tutorial zur Installation und Kennwortkonfiguration von MySQL 5.7.21
Inhaltsverzeichnis 1. Routing-Konfiguration 2. Vu...
Kürzlich schrieb ich in meinem Blog, dass ich fes...
<br />Um die Tabellenstruktur im Quellcode d...
React Native ist ein plattformübergreifendes Fram...
Inhaltsverzeichnis Docker-Bereitstellung Always o...
Vorwort: Zum Speichern mehrerer Elemente sind Arr...
Der Parameter innodb_autoinc_lock_mode steuert da...
Inhaltsverzeichnis Vorwort 1. cat-Befehl: 2. weit...
<br />Frage: Warum ist es nicht empfehlenswe...
Inhaltsverzeichnis Überblick Warum ein Framework ...
Projekthintergrund Seit kurzem gibt es ein Projek...
Die Entsprechung zwischen der Tensorflow-Version ...
Eines Tages stellte der Leiter die Anforderung, e...
Inhaltsverzeichnis Überblick Eigenschafteneinstel...
Inhaltsverzeichnis 1. Einführung in Nginx 2. Aufb...