Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
class
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 2017.
Ladé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.
Dans cet article
Exemple interactif
class Polygon { constructor(height, width) { this.area = height * width; }}console.log(new Polygon(4, 3).area);// Expected output: 12Il est aussi possible de définir une classe avec uneexpression class.
Syntaxe
class nom [extends autreNom] { // corps de la classe}Description
Les déclarations qui composent le corps de la classe sont exécutées enmode 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 desdéclarations de fonctions).
Exemples
>Déclarer une classe simple
Dans l'exemple qui suit, on définit une classePolygone pour laquelle on crée un sous-classeCarré. On note ici que la méthodesuper() 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 exceptionSyntaxError. De même, on ne pourra pas réutiliser un nom qui a déjà été utilisé dans une expression de classe.
// Deux déclarations avec le même nomclass Toto {}class Toto {} // Uncaught SyntaxError: Identifier 'Toto' has already been declared// Expression puis déclarationvar Truc = class {};class Truc {} // Uncaught TypeError: Identifier 'Truc' has already been declaredSpécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-class-definitions> |