Se trata de la clase JS de la página MDN. No entiendo por qué Bad class tiene un error de referencia. ¿Es porque el constructor vacío de la clase Bad llama a super() por defecto?
class Base {} class Good extends Base {} class AlsoGood extends Base { constructor() { return {a: 5}; } } class Bad extends Base { constructor() {} } new Good(); new AlsoGood(); new Bad(); // ReferenceErrorPara evitar recibir este error, debe eliminar el constructor de la clase o llamar a super() dentro del constructor de la clase mala.
¿Es porque el constructor vacío de la clase Bad llama a super() por defecto?
No: si el constructor vacío llamara a super de forma predeterminada, no vería el error.
El constructor de una clase derivada, si existe, debe llamar al constructor del padre con super .
Si una clase derivada carece de cualquier constructor, super se llamará automáticamente. Eso es
class Good extends Base { }es equivalente a
class Good extends Base { constructor(...args) { super(...args); } } Lo mismo no se aplica a los constructores vacíos: si el constructor está presente, super no se llama automáticamente, pero se debe llamar a super .