„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können ES6-Klassen verwendet werden, um Funktionen zu erweitern und auf Instanzdaten zuzugreifen?

Wie können ES6-Klassen verwendet werden, um Funktionen zu erweitern und auf Instanzdaten zuzugreifen?

Veröffentlicht am 12.11.2024
Durchsuche:442

How can ES6 Classes be Used to Extend Functions and Access Instance Data?

Funktion mit ES6-Klassen erweitern

In ES6 können spezielle Objekte erweitert werden, was eine Vererbung vom Funktionsobjekt ermöglicht. Obwohl es möglich ist, solche Objekte als Funktionen aufzurufen, kann die Implementierung der Logik für diesen Aufruf eine Herausforderung sein.

Übergabe von Instanzdaten an einen Funktionsaufruf

Beim Aufrufen einer Klasse als Funktion , dies bezieht sich auf das Fensterobjekt. Für den Zugriff auf Instanzdaten stehen zwei Ansätze zur Verfügung:

  1. Hardcodierung: Erzwingen Sie, dass der Superaufruf eine Codezeichenfolge erwartet, die die Instanzdaten enthält.
class Smth extends Function {
  constructor(x) {
    super("return "   JSON.stringify(x)   ";");
  }
}
  1. Verwenden eines Abschlusses: Gibt eine Abschlussfunktion zurück, die auf Instanzvariablen zugreift.
class Smth extends Function {
  constructor(x) {
    function smth() { return x; };
    Object.setPrototypeOf(smth, Smth.prototype);
    return smth;
  }
}

Abstraktion der Funktionserweiterung

Ein allgemeinerer Ansatz besteht darin, eine ExtensibleFunction-Klasse zu erstellen, die die Erweiterung verarbeitet:

class ExtensibleFunction extends Function {
  constructor(f) {
    return Object.setPrototypeOf(f, new.target.prototype);
  }
}

Diese Klasse kann dann verwendet werden, um bestimmte Klassen zu erweitern:

class Smth extends ExtensibleFunction {
  constructor(x) {
    super(() => { return x; }); // closure
  }
}

Zusammenfassend lässt sich sagen, dass die Erweiterung von Function mit ES6-Klassen die Vererbung des Verhaltens der Funktion bei gleichzeitiger Anpassung der Aufruflogik ermöglicht. Um beim Aufruf der erweiterten Funktion Zugriff auf Instanzdaten zu ermöglichen, können verschiedene Ansätze verwendet werden.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729462035 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3