[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Classes/static [Back]  [Original]

static - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

static

Baseline Large disponibilit

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 dfinir une mthode statique d'une classe. Les mthodes statiques ne sont pas disponibles sur les instances d'une classe mais sont appeles sur la classe elle-mme. Les mthodes statiques sont gnralement des fonctions utilitaires (qui peuvent permettre de crer 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

js
static nomMthode() { ... }

Description

Les mthodes statiques sont utilises lorsque la mthode ne s'applique qu' la classe elle-mme et pas ses instances. Les mthodes statiques sont gnralement utilises pour crer des fonctions utilitaires.

Exemples

Exemple classique

Dans l'exemple qui suit, on illustre :

  • comment une classe implmente une mthode statique
  • comment une classe avec une proprit statique peut tre dcline avec une sous-classe
  • comment une mthode statique peut ou ne peut pas tre appel
js
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()); // 3
console.log(Triple.triple(6)); // 18
console.log(SuperTriple.triple(4)); // 144
var 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 fonction

Utilisation depuis une autre mthode statique

Afin d'appeler une autre mthode statique dans une mthode statique, on pourra utiliser this.

js
class StaticMethodCall {
  static staticMethod() {
    return "Mthode statique appele";
  }
  static anotherStaticMethod() {
    return this.staticMethod() + " depuis une autre statique";
  }
}
StaticMethodCall.staticMethod();
// 'Mthode statique appele'
StaticMethodCall.anotherStaticMethod();
// 'Mthode statique appele depuis une autre statique'

Depuis les constructeurs de classes et les autres mthodes

Les mthodes statiques ne sont pas directement accessibles via le mot-cl this. Il faut les appeler avec le nom de la classe qui prfixe le nom de la mthode statique NomDeClasse.MthodeStatique() (comme pour les autres appels en dehors de la classe) ou avec la proprit constructor : this.constructor.MthodeStatique().

js
class StaticMethodCall {
  constructor() {
    console.log(StaticMethodCall.staticMethod());
    // 'appel de la mthode statique'

    console.log(this.constructor.staticMethod());
    // 'appel de la mthode statique'
  }

  static staticMethod() {
    return "appel de la mthode statique.";
  }
}

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-class-definitions

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page