Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie kann ich einen ES6-Klassenkonstruktor ohne das Schlüsselwort „new' aufrufen?

Patricia Arquette
Freigeben: 2024-10-26 02:27:27
Original
534 Leute haben es durchsucht

How Can I Call an ES6 Class Constructor Without the

ES6-Klassenkonstruktoren ohne „neu“ aufrufen

In ES6 sind Klassen syntaktischer Zucker für Konstruktorfunktionen. Wenn eine Klasse ohne das Schlüsselwort new aufgerufen wird, wird keine neue Instanz der Klasse erstellt. Stattdessen wird die Konstruktorfunktion der Klasse direkt aufgerufen.

Betrachten Sie die folgende Klasse:

<code class="javascript">class Foo {
  constructor(x) {
    if (!(this instanceof Foo)) return new Foo(x);
    this.x = x;
  }
  hello() {
    return `hello ${this.x}`;
  }
}</code>
Nach dem Login kopieren

Wenn wir versuchen, diese Klasse ohne das Schlüsselwort new aufzurufen, erhalten wir eine Fehlermeldung:

Cannot call a class as a function
Nach dem Login kopieren

Das liegt daran, dass Klassenkonstruktoren darauf ausgelegt sind, neue Instanzen der Klasse zu erstellen. Sie ohne den neuen Operator aufzurufen, entspricht dem Aufruf einer regulären Funktion.

Um den Aufruf eines Klassenkonstruktors ohne das neue Schlüsselwort zu ermöglichen, können wir eine Kombination aus einer Konstruktorfunktion und einer Pfeilfunktion wie folgt verwenden:

<code class="javascript">class Foo {
  constructor(x) {
    if (!(this instanceof Foo)) return new Foo(x);
    this.x = x;
  }
  hello() {
    return `hello ${this.x}`;
  }
}

const FooWithoutNew = () => new Foo(...arguments);</code>
Nach dem Login kopieren

Jetzt können wir den Klassenkonstruktor ohne das Schlüsselwort new mit FooWithoutNew aufrufen:

FooWithoutNew("world").hello(); // "hello world"
Nach dem Login kopieren

Es ist jedoch wichtig zu beachten, dass dieser Ansatz einige Nachteile hat. Erstens muss eine separate Funktion erstellt werden, was unpraktisch sein kann. Zweitens unterbricht es das Verhalten des Konstruktors, eine neue Instanz zurückzugeben.

Im Allgemeinen wird aus Gründen der Klarheit und Konsistenz empfohlen, Klassenkonstruktoren immer mit dem Schlüsselwort new aufzurufen.

Das obige ist der detaillierte Inhalt vonWie kann ich einen ES6-Klassenkonstruktor ohne das Schlüsselwort „new' aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!