So implementieren Sie den neuen Operator von JavaScript selbst

So implementieren Sie den neuen Operator von JavaScript selbst

Konstruktor

Bevor 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 Operator

Was 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 Neues

Nachdem 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:
  • Lassen Sie uns ausführlich über das Prinzip und die Implementierung von new in JS sprechen
  • Detaillierte Beschreibung der Funktion von new in JS
  • Detaillierte Erklärung des Prinzips und Beispiel des new-Operators in JavaScript
  • Untersuchung von zwei Möglichkeiten zur Implementierung von „new“ in JavaScript
  • Detaillierte Erklärung der Rolle des neuen Operators in Js
  • Zusammenfassung gängiger Methoden von C# Newtonsoft.Json
  • C# Newtonsoft.Json analysiert mehrere verschachtelte JSON-Dateien für ein Deserialisierungsbeispiel
  • c#: Newtonsoft.Json-Paketvorgang hinzufügen
  • Der neue Befehl in JavaScript
  • Handschriftliche Implementierung von new in JS

<<:  Beispiel für die Implementierung der Hochverfügbarkeit von Keepalived+Nginx

>>:  Tutorial zur Installation und Kennwortkonfiguration von MySQL 5.7.21

Artikel empfehlen

css3-Animation, Ballrollen, js-Steuerung, Animationspause

Mit CSS3 können Animationen erstellt werden, die ...

Analysieren Sie, wie Sie automatisch Vue-Komponentendokumentation generieren

Inhaltsverzeichnis 1. Aktuelle Situation 2. Commu...

Unglaubliche CSS-Navigationsleiste unterstreiche folgenden Effekt

Der erste Cutter in China github.com/chokcoco Hie...

Detaillierte Erläuterung der Windows-Zeitserver-Konfigurationsmethode

Kürzlich habe ich festgestellt, dass die Serverze...

So erzielen Sie mit three.js einen dynamischen 3D-Texteffekt

Vorwort Hallo zusammen, hier ist der CSS-Assisten...

JavaScript implementiert die Kontrollkästchenauswahlfunktion

In diesem Artikelbeispiel wird der spezifische Ja...

Detaillierte Erklärung des Übergangsattributs einer einfachen CSS-Animation

1. Verständnis der Übergangsattribute 1. Das Über...

So schreiben Sie speichereffiziente Anwendungen mit Node.js

Inhaltsverzeichnis Vorwort Problem: Kopieren groß...

Das Vue-Projekt realisiert den Paging-Effekt

Der Paging-Effekt wird zu Ihrer Information im Vu...

Tutorial zur Installation von MYSQL8.0 auf Alibaba Cloud ESC

Öffnen Sie das Verbindungstool. Ich verwende Moba...