我知道this
之前不允许super
,但我需要这样做。我想知道在es6中是否有合法的方法可以做到这一点?
我的代码:
class DOMElement {
constructor(aNodeName) {
this.name = aNodeName;
this.create();
}
create() {
let domref = document.createElement(this.name);
document.body.appendChild(domref);
return domref;
}
}
class Button extends DOMElement {
constructor(aLabel) {
this.label = aLabel;
super('button');
}
create() {
let domref = super.create();
domref.textContent = this.label;
}
}
如果我在this.label
中致电super('button')
之前未设置Button.prototype.create
,则domref.textContent
设置为undefined
。
答案 0 :(得分:2)
没有'合法'的方式。
在构造中父类应该使用静态属性值的情况下,它可以是一个getter:
get label() {
return 'label';
}
在这种情况下,这意味着课堂设计是错误的。在父类中没有任何东西可以施加这样的限制。实际上,label
仅供子类使用。它应该是:
constructor(aLabel) {
super('button');
this._domref.textContent = alabel;
}
create() {
// if parent class is user-defined, it should be done there
// instead of returning a value, because it doesn't make sense
// to leave an important part of the object without a reference
this._domref = super.create();
}