Intento crear algunas clases de Javascript y clases principales, y no estoy seguro de si lo estoy haciendo correctamente, pero super() en la clase secundaria no funciona como debería. Intentando que el contenido de DivElement funcione, pero sigue sin definirse.
Código:
class HTMLElement{ constructor(tag, content){ this.tag = tag; this.content = content; } render(){ return `<${this.tag}>${this.content}</${this.tag}>`; } class DivElement extends HTMLElement{ constructor(content){ super(content); this.tag = 'div'; } } let div1 = new DivElement('test'); console.log(div1); console.log(div1.render());La superllamada debe coincidir con la firma del método de destino. Debería decir super('div', content); :
class HTMLElement{ constructor(tag, content){ this.tag = tag; this.content = content; } render(){ return `<${this.tag}>${this.content}</${this.tag}>`; } } class DivElement extends HTMLElement{ constructor(content){ super('div', content); // changed here this.tag = 'div'; } } let div1 = new DivElement('test'); console.log(div1); console.log(div1.render()); // <div>test</div>El constructor de la clase HTMLElement se llama con dos parámetros (etiqueta y contenido). La clase extendida llama al constructor con un solo parámetro y asigna contenido al parámetro de etiqueta de la clase principal. Tenga en cuenta que JS no permite la sobrecarga de constructores.
Ver la respuesta de Glicerina.