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
Mit CSS3 können Animationen erstellt werden, die ...
Inhaltsverzeichnis 1. Aktuelle Situation 2. Commu...
Der erste Cutter in China github.com/chokcoco Hie...
Detaillierte Erläuterung der JDBC-Datenbankverknü...
Kürzlich habe ich festgestellt, dass die Serverze...
Vorwort Hallo zusammen, hier ist der CSS-Assisten...
In diesem Artikel wird der Beispielcode einer CSS...
ElementUI implementiert das Tutorial zum Paginier...
Um den Benutzern beim Layouten der Seite einen an...
In diesem Artikelbeispiel wird der spezifische Ja...
Inhaltsverzeichnis Ideen Abfangen von Anfragen An...
1. Verständnis der Übergangsattribute 1. Das Über...
Inhaltsverzeichnis Vorwort Problem: Kopieren groß...
Der Paging-Effekt wird zu Ihrer Information im Vu...
Öffnen Sie das Verbindungstool. Ich verwende Moba...