Javascript Class 继承没有正常工作
Javascript Class Inheritance not working as it should
正在尝试创建一些 Javascript classes 和父级 classes,但不确定我是否正确执行此操作,但子级中的 super() class 没有正常工作。试图让 DivElement 中的内容正常工作,但它一直返回未定义。
代码:
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());
超级调用应该匹配目标方法的签名。它应该是 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>
HTMLElement class 的构造函数使用两个参数(标记和内容)调用。 extendedclass只调用一个参数的构造函数,将内容赋值给parentclass的tag参数。注意JS不允许构造函数重载
参见甘油的回答。
正在尝试创建一些 Javascript classes 和父级 classes,但不确定我是否正确执行此操作,但子级中的 super() class 没有正常工作。试图让 DivElement 中的内容正常工作,但它一直返回未定义。
代码:
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());
超级调用应该匹配目标方法的签名。它应该是 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>
HTMLElement class 的构造函数使用两个参数(标记和内容)调用。 extendedclass只调用一个参数的构造函数,将内容赋值给parentclass的tag参数。注意JS不允许构造函数重载
参见甘油的回答。