Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
extends
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since marzo de 2016.
La palabra claveextends es usada en ladeclaración oexpresión de clases, para crear una clase hija de otra.
In this article
Sintaxis
class ChildClass extends ParentClass { ... }Descripción
La palabra claveextends se puede usar para crear una subclase a partir de clases personalizadas, así como sus objetos incorporados.
La propiedad.prototype de la nueva subclase debe ser unObject onull.
Ejemplos
>Como usarextends
El primer ejemplo crea una clase con el nombreSquare a partir de una clase llamadaPolygon. Este ejemplo ha sido extraido del siguientelive demo(código fuente).
class Square extends Polygon { constructor(length) { // Aquí se invoca el constructor de la clase padre con longitud // proporcionada por el ancho y alto de Polygon super(length, length); // Nota: En las clases extendidas, se debe llamar a super() // antes de poder usar 'this'. El no hacerlo provocará un reference error. this.name = "Square"; } get area() { return this.height * this.width; } set area(value) { this.area = value; }}Como usarextends con objetos incorporados
Este ejemplo extiende el objeto incorporadoDate. Este ejemplo ha sido extraido del siguientelive demo(código fuente).
class myDate extends Date { constructor() { super(); } getFormattedDate() { var months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ]; return ( this.getDate() + "-" + months[this.getMonth()] + "-" + this.getFullYear() ); }}Extendiendo denull
Extender denull es como hacerlo de una clase normal, excepto que el objeto prototype no hereda deObject.prototype.
class nullExtends extends null { constructor() {}}Object.getPrototypeOf(nullExtends); // Function.prototypeObject.getPrototypeOf(nullExtends.prototype); // nullEspecificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-class-definitions> |