La déclaration class crée une nouvelle classe avec le nom fourni en utilisant l'héritage à base de prototypes pour émuler le fonctionnement de classe.

Il est aussi possible de définir une classe avec une expression class.

Syntaxe

class nom [extends]{
  // corps de la classe
}

Description

Les déclarations qui composent le corps de la classe sont exécutées en mode strict. La propriété du constructeur est optionnelle.

Les déclarations utilisées dans les classes ne sont pas remontées (hoisted) (à la différence des déclarations de fonctions).

Exemples

Déclarer une classe simple

Dans l'exemple qui suit, on définit une classe Polygone pour laquelle on crée un sous-classe Carré. On note ici que la méthode super() ne peut être utilisée qu'au sein d'un constructeur et doit être appelée avant l'utilisation du mot-clé this.

class Polygone {
  constructor(hauteur, largeur) {
    this.nom = 'Polygone';
    this.hauteur = hauteur;
    this.largeur = largeur;
  }
}

class Carré extends Polygone {
  constructor(longueur) {
    super(longueur,longueur);
    this.nom = 'Carré';
  }
}

Attention : Déclarer une classe deux fois lèvera une exception TypeError.

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Définitions de classe' dans cette spécification.
Standard Définition initiale.
ECMAScript 2016 (ECMA-262)
La définition de 'Class definitions' dans cette spécification.
Standard  
ECMAScript 2017 (ECMA-262)
La définition de 'Class definitions' dans cette spécification.
Standard  
ECMAScript Latest Draft (ECMA-262)
La définition de 'Définitions de classe' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
Support simpleChrome Support complet 42Edge Support complet OuiFirefox Support complet 45IE Aucun support NonOpera ? Safari Support complet 10.1WebView Android Support complet 42Chrome Android Support complet 42Edge Mobile Support complet OuiFirefox Android Support complet 45Opera Android ? Safari iOS Support complet 10.1Samsung Internet Android Support complet 4.0nodejs Support complet 6.0.0
Array subclassingChrome Support complet 43Edge ? Firefox ? IE Aucun support NonOpera ? Safari ? WebView Android Support complet 43Chrome Android Support complet 43Edge Mobile ? Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Support complet 4.0nodejs ?
Allowed in sloppy modeChrome Support complet 49Edge ? Firefox ? IE Aucun support NonOpera ? Safari ? WebView Android Support complet 49Chrome Android Support complet 49Edge Mobile ? Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Support complet 5.0nodejs ?

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, gabsoftware
Dernière mise à jour par : SphinxKnight,