1. Web
  2. JavaScript
  3. Référence JavaScript
  4. Classes
  5. extends

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

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 les déclarations et expressions de classes afin de signifier qu'un type représenté par une classe hérite d'un autre type.

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

js
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 une extension) doit être un Object ou null.

Exemples

Utiliser extends

Ce fragment de code est tiré de cet exemple et crée une classe Carré qui hérite de Polygone :

js
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;
 }
}

Utiliser extends avec des objets natifs

Dans l'exemple suivant, on crée l'équivalent d'une sous-classe pour Date :

js
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.

Étendre null

Étendre null se fait comme avec une classe normale sauf que l'objet prototype n'hérite pas de Object.prototype.

js
class extensionNull extends null {
 constructor() {}
}
Object.getPrototypeOf(extensionNull); // Function.prototype
Object.getPrototypeOf(extensionNull.prototype); // null
new extensionNull(); // ReferenceError

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-class-definitions

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par les contributeurs du MDN.

AltStyle によって変換されたページ (->オリジナル) /