La declaración class crea una nueva clase con el nombre proporcionado utilizando la herencia basada en prototipos

También se puede definir una clase usando una expresión de clase. Pero a diferencia de las expresiones de clases, la declaración de clases no permite que una clase existente sea declarada de nuevo y en caso de hacerse, lanzará un error de tipo.

Sintaxis

class name [extends] {
  // Contenido de la clase
}

Descripción

De la misma manera que con las expresiones de clase, el contenido de una clase se ejecuta en modo estricto.

Las declaraciones de clases no están izadas (al contrario que las declaraciones de funciones).

Ejemplos

Declaración sencilla de una clase

En el siguiente ejemplo, primero definimos la clase Polygon, luego extendemos de ella para crear la clase Square. Notar que super(), utilizado en el constructor, sólo puede ser llamado dentro del constructor y debe ser llamado antes de que la palabra clave this pueda ser usada.

class Polygon {
  constructor(height, width) {
    this.name = 'Polygon';
    this.height = height;
    this.width = width;
  }
}

class Square extends Polygon {
  constructor(length) {
    super(length, length);
    this.name = 'Square';
  }
}

Especificaciones

Especificación Estado Comentarios
ECMAScript 2015 (6th Edition, ECMA-262)
La definición de 'Class definitions' en esta especificación.
Standard Definición inicial.
ECMAScript Latest Draft (ECMA-262)
La definición de 'Class definitions' en esta especificación.
Draft  

Compatibilidad en navegadores

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Característica Chrome Firefox (Gecko) Internet Explorer Opera Safari
Soporte básico 42.0 45 (45) ? ? ?
Array subclassing 43.0 Sin soporte ? ? ?
Característica Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome para Android
Soporte básico Sin soporte 42.0 45.0 (45) ? ? ? 42.0
Array subclassing Sin soporte 43.0 Sin soporte ? ? ? 43.0

Ver también

Etiquetas y colaboradores del documento

Colaboradores en esta página: AlePerez92, PauPeinado
Última actualización por: AlePerez92,