ECMAScript 6(Harmony)介绍classes
能够从另一个继承。假设我有一个游戏和一些基本类来描述机器人行为的基本内容。我简化了我的真实体系结构,但假设我需要运行render
和另一个例程,我将这些调用放在基本的Bot
类中。
class Bot{
constructor(){
render();
}
render(){}
}
然后每个机器人覆盖它的render
函数,并且可以在构造函数中进行一些设置:
class DevilBot extends Bot{
constructor(){
super();
this.color = 0xB4D333;
}
render(){
createSomeMesh(this.color);
}
}
这里的问题是,在我致电super()
之前 - this
不存在。但是super
(父构造函数)将调用需要在子构造函数中定义的render
变量的重写color
。我可以在父构造函数中假设子对象将实现一些具有所有必需设置的init
函数并调用它:
class Bot{
constructor(){
if (this.init) this.init();
render();
}
render(){}
}
class DevilBot extends Bot{
init(){
this.color = 0xB4D333;
}
render(){
createSomeMesh(this.color);
}
}
但这种方法有多好,什么是解决这种问题的首选方式?