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