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.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
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
Compatibilité des navigateurs
| Ordinateur | Mobile | Serveur | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Support simple | Chrome Support complet 42 | Edge Support complet Oui | Firefox Support complet 45 | IE Aucun support Non | Opera ? | Safari Support complet 10.1 | WebView Android Support complet 42 | Chrome Android Support complet 42 | Edge Mobile Support complet Oui | Firefox Android Support complet 45 | Opera Android ? | Safari iOS Support complet 10.1 | Samsung Internet Android Support complet 4.0 | nodejs Support complet 6.0.0 |
| Array subclassing | Chrome Support complet 43 | Edge ? | Firefox ? | IE Aucun support Non | Opera ? | Safari ? | WebView Android Support complet 43 | Chrome Android Support complet 43 | Edge Mobile ? | Firefox Android ? | Opera Android ? | Safari iOS ? | Samsung Internet Android Support complet 4.0 | nodejs ? |
| Allowed in sloppy mode | Chrome Support complet 49 | Edge ? | Firefox ? | IE Aucun support Non | Opera ? | Safari ? | WebView Android Support complet 49 | Chrome Android Support complet 49 | Edge Mobile ? | Firefox Android ? | Opera Android ? | Safari iOS ? | Samsung Internet Android Support complet 5.0 | nodejs ? |
Légende
- Support complet
- Support complet
- Aucun support
- Aucun support
- Compatibilité inconnue
- Compatibilité inconnue

