Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
static
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mars 2016.
Le mot-cléstatic permet de définir une méthode statique d'une classe. Les méthodes statiques ne sont pas disponibles sur les instances d'une classe mais sont appelées sur la classe elle-même. Les méthodes statiques sont généralement des fonctions utilitaires (qui peuvent permettre de créer ou de cloner des objets par exemple).
Dans cet article
Exemple interactif
class ClassWithStaticMethod { static staticProperty = "someValue"; static staticMethod() { return "static method has been called."; } static { console.log("Class static initialization block called"); }}console.log(ClassWithStaticMethod.staticProperty);// Expected output: "someValue"console.log(ClassWithStaticMethod.staticMethod());// Expected output: "static method has been called."Syntaxe
static nomMéthode() { ... }Description
Les méthodes statiques sont utilisées lorsque la méthode ne s'applique qu'à la classe elle-même et pas à ses instances. Les méthodes statiques sont généralement utilisées pour créer des fonctions utilitaires.
Exemples
>Exemple classique
Dans l'exemple qui suit, on illustre :
- comment une classe implémente une méthode statique
- comment une classe avec une propriété statique peut être déclinée avec une sous-classe
- comment une méthode statique peut ou ne peut pas être appelé
class Triple { static triple(n) { if (n === undefined) { n = 1; } return n * 3; }}class SuperTriple extends Triple { static triple(n) { return super.triple(n) * super.triple(n); }}console.log(Triple.triple()); // 3console.log(Triple.triple(6)); // 18console.log(SuperTriple.triple(4)); // 144var tp = new Triple();console.log(SuperTriple.triple(4)); // 144 (pas d'impact de l'affectation du parent)console.log(tp.triple()); // tp.triple n'est pas une fonctionUtilisation depuis une autre méthode statique
Afin d'appeler une autre méthode statique dans une méthode statique, on pourra utiliserthis.
class StaticMethodCall { static staticMethod() { return "Méthode statique appelée"; } static anotherStaticMethod() { return this.staticMethod() + " depuis une autre statique"; }}StaticMethodCall.staticMethod();// 'Méthode statique appelée'StaticMethodCall.anotherStaticMethod();// 'Méthode statique appelée depuis une autre statique'Depuis les constructeurs de classes et les autres méthodes
Les méthodes statiques ne sont pas directement accessibles via le mot-cléthis. Il faut les appeler avec le nom de la classe qui préfixe le nom de la méthode statiqueNomDeClasse.MéthodeStatique() (comme pour les autres appels en dehors de la classe) ou avec la propriétéconstructor :this.constructor.MéthodeStatique().
class StaticMethodCall { constructor() { console.log(StaticMethodCall.staticMethod()); // 'appel de la méthode statique' console.log(this.constructor.staticMethod()); // 'appel de la méthode statique' } static staticMethod() { return "appel de la méthode statique."; }}Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-class-definitions> |