--- title: static slug: Web/JavaScript/Reference/Classes/static tags: - Klasser - Metoder - Statiska funktioner translation_of: Web/JavaScript/Reference/Classes/static ---
Nyckelordet static definierar en statisk metod för en klass.
static methodName() { ... }
Anrop på statiska metoder är gjorda direkt på klassen och kan inte göras genom instanser av klassen. Statiska metoder är ofta använda för att göra verktygsfunktioner.
För att anropa en statisk metod från en annan statisk metod av samma klass, kan du använda "this".
class StaticMethodCall {
static staticMethod() {
return 'En statisk metod har blivit anropad';
}
static anotherStaticMethod() {
return this.staticMethod() + ' från en annan statisk metod!';
}
}
StaticMethodCall.staticMethod();
// 'En statisk metod har blivit anropad'
StaticMethodCall.anotherStaticMethod();
// 'En statisk metod har blivit anropad från en annan statisk metod!'
Statiska metoder är inte tillgängliga genom att använda "this" från icke statiska metoder. Du behöver anropa dem genom att antingen använda klassnamnet: ClassName.staticMethodName() eller genom att anropa metoden som en egendom av konstruktorn: this.constructor.staticMethodName().
class StaticMethodCall {
constructor() {
console.log(StaticMethod.staticMethod());
// 'En statisk metod har blivit anropad.'
console.log(this.constructor.staticMethod());
// 'En statisk metod har blivit anropad.'
}
static staticMethod() {
return 'En statisk metod har blivit anropad.';
}
}
Det följande exemplet visar flera saker:
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 (Påverkas inte av förälderns instans.)
console.log(tp.triple());
// 'tp.triple is not a function'.
| Specifikation | Status | Kommentar |
|---|---|---|
| {{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ES2015')}} | Första definition. |
| {{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}} | {{Spec2('ESDraft')}} |
{{CompatibilityTable}}
| Funktion | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Grundlig support | {{CompatChrome(42.0)}} | {{CompatGeckoDesktop(45)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
| Funktion | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|
| Grundlig support | {{CompatNo}} | {{CompatGeckoMobile(45)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatChrome(42.0)}} |