Heim >Web-Frontend >js-Tutorial >Wie rufe ich statische Methoden in ES6-Klassen auf: Konstruktor vs. Klassenname?

Wie rufe ich statische Methoden in ES6-Klassen auf: Konstruktor vs. Klassenname?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-16 07:50:03962Durchsuche

How to Call Static Methods in ES6 Classes: Constructor vs. Class Name?

Aufrufen statischer Methoden in ES6-Klassen

In ES6-Klassen können statische Methoden mit dem Schlüsselwort static definiert werden. Man könnte sich fragen, wie diese statischen Methoden standardmäßig aufgerufen werden.

Zwei Ansätze:

1. Verwendung des Konstruktors

Bei diesem Ansatz wird die Konstruktoreigenschaft der Klasseninstanz verwendet, um auf die statische Methode zuzugreifen. Zum Beispiel:

class SomeObject {
  constructor(n) {
    this.n = n;
  }

  static print(n) {
    console.log(n);
  }

  printN() {
    this.constructor.print(this.n);
  }
}

2. Verwenden des Klassennamens

Der andere Ansatz besteht darin, den Namen der Klasse direkt zum Aufrufen der statischen Methode zu verwenden. Etwa so:

SomeObject.print(123);

Auswirkungen auf die Vererbung:

Die Verwendung beider Ansätze hat unterschiedliche Auswirkungen auf die Vererbung und das Überschreiben statischer Methoden.

  • Konstruktoransatz: Verwendet dynamischen Versand, bezieht sich also auf die Klasse des aktuelle Instanz. Wenn die statische Methode in einer Unterklasse überschrieben wird, wird die überschriebene Methode aufgerufen.
  • Klassenname-Ansatz: Bezieht sich direkt auf die Klasse, in der die statische Methode definiert ist, und umgeht mögliche Überschreibungen in Unterklassen.

Fazit:

Beides Ansätze sind gültig, die Wahl hängt jedoch vom gewünschten Verhalten im Zusammenhang mit der Vererbung ab. Wenn Sie erwarten, dass statische Eigenschaften konsistent bleiben und zur ursprünglichen Klasse gehören, verwenden Sie den Klassennamen-Ansatz. Wenn Sie dynamischen Zugriff auf die statischen Eigenschaften der Klasse der aktuellen Instanz benötigen, verwenden Sie den Konstruktoransatz.

Das obige ist der detaillierte Inhalt vonWie rufe ich statische Methoden in ES6-Klassen auf: Konstruktor vs. Klassenname?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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