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
Lernziele: Lernen Sie, MySQL-Datenbanken unter de...
Ziel dieses Artikels ist es, die Beziehung zwisch...
Ich bin einmal auf eine Aufgabe gestoßen, bei der...
1. Nach der Installation der Windows-Version von ...
Inhaltsverzeichnis 1. Beziehung zwischen übergeor...
Inhaltsverzeichnis Tomcat-Einführung Tomcat-Berei...
Daten sind das wichtigste Kapital eines Unternehm...
1. Einleitung table_cache ist ein sehr wichtiger ...
Aus verschiedenen Gründen (einschließlich Neugier...
Überblick Bei kleinen und mittelgroßen Projekten ...
Der Server meldet einen Fehler 502 beim Synchroni...
Inhaltsverzeichnis Wirkung Beginnen Sie mit der T...
SSH-Secure-Shell, ermöglicht sichere Remote-Anmel...
Gespeicherte Prozeduren 1. Erstellen Sie eine ges...
1. Verwenden Sie immer :key in v-for Die Verwendu...