【发布时间】:2019-03-23 17:28:43
【问题描述】:
我有一个八叉树课程。八叉树的一个关键特性是它可以创建自己的孩子。
class Octree {
...
createChildren(){
...
/* for each of the 8 new children*/
this.children.push(new Octree(/*someargs*/))
...
}
}
现在我想继承八叉树类,但是,我也希望孩子成为被继承的类。例如class LODWorldTree extends Octree,另外包含一些游戏的渲染器数据。但是,如果我调用LODWorldTree.createChildren(),那么LODWorldTree.children 将是Octrees 的数组,而不是LODWorldTrees。
解决此问题的最佳方法是什么?在写这篇文章时,我发现我可以存储Octree.myClass = /*some inherited class*/,并为从Octree 继承的所有类手动设置此变量。有没有更好的方法来做这样的事情?也许是this.prototype?
【问题讨论】:
-
当你打印
this.children时你想要那些是继承类的实例吗? -
如果您不想使用
this.constructor,子类可以用自己的实现覆盖createChildren()。 -
@PatrickRoberts 目标是找到一个不需要重写八叉树的基本核心特性的实现。继承的重点是避免重写。
标签: javascript inheritance javascript-objects