ECMAScript 6 (Harmony)引入了类
,可以继承自另一个类。假设我有一个游戏和一些基本的类来描述机器人行为的基本事物。我简化了我的真实架构,但是假设我需要运行渲染(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
函数 with 所有需要的设置并调用它:class Bot{
constructor(){
if (this.init) this.init();
render();
}
render(){}
}
class DevilBot extends Bot{
init(){
this.color = 0xB4D333;
}
render(){
createSomeMesh(this.color);
}
}
但是这种方法有多好,什么是解决这个问题的首选方式?
render
)。在调用您的Bot
子类之后手动调用this.render()
有什么问题吗?另外,要在类内部调用成员函数,您需要使用this.render()
而不是render()
。 - Mulanrender
来简化。正如我在之前的评论中所写的那样,在真实的架构中,我有更复杂的代码,我想要隐藏在父对象中。 - SET001