--- title: Statische Methoden slug: Web/JavaScript/Reference/Classes/static tags: - Classes - ECMAScript 2015 - JavaScript - Static translation_of: Web/JavaScript/Reference/Classes/static original_slug: Web/JavaScript/Reference/Klassen/static ---
Das static
Schüsselwort definiert statische Methoden für eine Klasse.
static methodenName() { ... }
Statische Methoden werden ohne Instanzierung einer Klasse aufgerufen und sind über eine erzeugte Instanz nicht aufrufbar. Oft werden in statische Methoden für Hilfsfunktionen verwendet.
Um eine statische Methode aus einer anderen statischen Methode der gleichen Klasse aufzurufen, kann das this
Schlüsselwort verwendet werden.
class StaticMethodCall { static staticMethod() { return 'Static method has been called'; } static anotherStaticMethod() { return this.staticMethod() + ' from another static method'; } } StaticMethodCall.staticMethod(); // 'Static method has been called' StaticMethodCall.anotherStaticMethod(); // 'Static method has been called from another static method'
Statische Methoden sind mit dem this
Schlüsselwort nicht direkt erreichbar von nicht statischen Methoden. Man kann sie mit dem Klassennamen aufrufen: KLASSENNAME.STATISCH_METHODE_NAME
oder mit der Aufrufen einer Eigenschaft von constructor
: this.constructor.
STATISCH_METHODE_NAME
.
class StaticMethodCall{ constructor(){ console.log(StaticMethodCall.staticMethod()); // 'static method has been called' console.log(this.constructor.staticMethod()); // 'static method has been called' } static staticMethod(){ return 'static method has been called.'; } }
Das folgende Beispiel demonstriert mehrere Dinge:
class Triple { static triple(n) { if (n === undefined) { n = 1; } return n * 3; } } class BiggerTriple extends Triple { static triple(n) { return super.triple(n) * super.triple(n); } } console.log(Triple.triple()); // 3 console.log(Triple.triple(6)); // 18 var tp = new Triple(); console.log(BiggerTriple.triple(3)); // 81 (not affected by parent's instantiation) console.log(tp.triple()); // 'tp.triple is not a function'.
Spezifikation | Status | Kommentar |
---|---|---|
{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ES2015')}} | Initiale Definition. |
{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.classes.static")}}