Heim >Web-Frontend >js-Tutorial >Wie rufe ich statische Methoden aus nichtstatischen ES6-Klassenmethoden auf?
Aufrufen statischer Methoden aus nicht-statischen ES6-Klassenmethoden
Bei der Arbeit mit ES6-Klassen müssen Sie möglicherweise auf statische Methoden zugreifen innerhalb nicht statischer Klassenmethoden. Um dies zu erreichen, gibt es im Wesentlichen zwei Möglichkeiten: die Verwendung des Konstruktors oder die direkte Bezugnahme auf den Klassennamen. Obwohl beide Methoden technisch machbar sind, weisen sie im Zusammenhang mit der Vererbung mit überschriebenen statischen Methoden unterschiedliche Verhaltensweisen auf.
Option 1: Verwendung des Konstruktors
class SomeObject { constructor(n) { this.n = n; } static print(n) { console.log(n); } printN() { this.constructor.print(this.n); } }
Hier Der Zugriff auf die statische Methode print erfolgt beispielsweise über den Konstruktor this.constructor. Dieser Ansatz stellt sicher, dass die richtige statische Methode aufgerufen wird, auch wenn die Klasse erweitert wird und die statische Methode in der Unterklasse überschrieben wird.
Option 2: Direkt auf den Klassennamen verweisen
class SomeObject { constructor(n) { this.n = n; } static print(n) { console.log(n); } printN() { SomeObject.print(this.n); } }
In diesem Fall wird die statische Methode print durch ihren Klassennamen referenziert. Diese Methode ist im Wesentlichen statisch und gibt immer den in der Klasse definierten Originalwert zurück, unabhängig von etwaigen Vererbungsbeziehungen.
Überlegungen zur Vererbung und Überschreibung
Die Wahl zwischen der Verwendung des Konstruktors oder der Klassenname wird direkt wichtig, wenn es um Vererbung und überschriebene statische Methoden geht, wie dargestellt unten:
class Super { static whoami() { return "Super"; } lognameA() { console.log(Super.whoami()); } lognameB() { console.log(this.constructor.whoami()); } } class Sub extends Super { static whoami() { return "Sub"; } }
Fall 1: Verwendung von Super.whoami()
Fall 2: Verwendung von this.constructor.whoami()
Das Verhalten in diesen Szenarien kann variieren, je nachdem, ob die statische Methode tatsächlich überschrieben wird oder nicht. Der Verweis auf die statische Eigenschaft über den Klassennamen sorgt für echtes statisches Verhalten, während die Verwendung von this.constructor dynamische Dispatch- und Vererbungsüberlegungen ermöglicht. Die Wahl der geeigneten Methode hängt vom gewünschten Verhalten im jeweiligen Kontext ab.
Das obige ist der detaillierte Inhalt vonWie rufe ich statische Methoden aus nichtstatischen ES6-Klassenmethoden auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!