【发布时间】:2021-11-20 16:26:27
【问题描述】:
我想知道一旦子类完成其构造函数后,是否有一种机制或内置函数可以让超类做某事?
或者我需要自己构建它?
类似:
Class Parent {
constructor(){
console.log(1);
}
constructorComplete(){
console.log(5);
}
}
Class Child extends Parent {
constructor(){
super()
console.log(2);
}
constructorComplete(){
console.log(4);
// super.constructorComplete();
}
}
Class Grandchild extends Child {
constructor(){
super()
console.log(3);
// super.constructorComplete();
}
}
谢谢。
【问题讨论】:
-
超类应该对它的后代一无所知。听起来你有一个泄漏的抽象......
-
这感觉就像XY Problem - 你能描述你为什么要这样做吗,可能有更合适的模式可以使用。
-
构造函数不应该“做”某事,它应该只初始化实例而不是其他任何东西。
-
谢谢大家,我想将每个实例添加到列表中。所以我在超类的构造函数中添加了
list.push(this)。但是我希望实例在添加到列表之前已经很好地初始化,并且有多个子类。我不想把list.push(this)放在那些子类中。无论如何,如果构造函数不应该“做”某事,我应该只使用list.push(new SubClass())吗? -
@SamuelWong 是的,在实例化之外执行
list.push()非常非常干净。它也不将类限制为单个全局列表。
标签: javascript class inheritance constructor