Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
extends
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éextends est utilisé dans lesdéclarations etexpressions de classes afin de signifier qu'un type représenté par une classe hérite d'un autre type.
Dans cet article
Exemple interactif
class DateFormatter extends Date { getFormattedDate() { const months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ]; return `${this.getDate()}-${months[this.getMonth()]}-${this.getFullYear()}`; }}console.log(new DateFormatter("August 19, 1975 23:15:30").getFormattedDate());// Expected output: "19-Aug-1975"Syntaxe
class ClasseFille extends ClasseParente { ... }Description
Le mot-cléextends peut être utilisé pour créer des sous-classes de classes existantes (natives ou non).
La propriété.prototype d'une classe fille (aussi appelée uneextension) doit être unObject ounull.
Exemples
>Utiliserextends
Ce fragment de code est tiré decet exemple et crée une classeCarré qui hérite dePolygone :
class Carré extends Polygone { constructor(longueur) { // On utilise le constructeur de la classe parente // avec le mot-clé super super(longueur, longueur); // Pour les classes dérivées, super() doit être appelé avant de // pouvoir utiliser 'this' sinon cela provoque une exception // ReferenceError this.nom = "Carré"; } get aire() { return this.hauteur * this.largeur; }}Utiliserextends avec des objets natifs
Dans l'exemple suivant, on crée l'équivalent d'une sous-classe pourDate :
class maDate extends Date { constructor() { super(); } getFormattedDate() { var mois = [ "Jan", "Fév", "Mar", "Avr", "Mai", "Juin", "Juil", "Août", "Sep", "Oct", "Nov", "Déc", ]; return ( this.getDate() + "-" + mois[this.getMonth()] + "-" + this.getFullYear() ); }}Ces exemples sont extraits de ces deux pages :démonstration,source.
Étendrenull
Étendrenull se fait comme avec une classe normale sauf que l'objet prototype n'hérite pas deObject.prototype.
class extensionNull extends null { constructor() {}}Object.getPrototypeOf(extensionNull); // Function.prototypeObject.getPrototypeOf(extensionNull.prototype); // nullnew extensionNull(); // ReferenceErrorSpécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-class-definitions> |