【发布时间】:2017-05-01 11:09:37
【问题描述】:
如何避免 ES6 Javascript 中类继承的命名冲突?
大型 ES6 Javascript 应用程序使用大量继承,以至于在基类中使用泛型名称可能意味着稍后在创建派生类时调试令人头疼。这可能是一个糟糕的类设计产品,但似乎更多的是 Javascript 能够顺利扩展的问题。其他语言提供了隐藏继承变量 (Java) 或属性 (C#) 的机制。缓解这个问题的另一种方法是使用 Javascript 没有的私有变量。
以下是此类碰撞的示例。 TreeObject 类扩展了一个事件对象(以继承事件功能),但它们都使用parent 来存储它们的父对象。
class Evented {
constructor(parent) {
this.parent = parent;
}
}
class TreeObject extends Evented{
constructor(eventParent, treeParent) {
super(eventParent);
this.parent = treeParent;
}
}
虽然这个示例有点人为,但我在 Ember 等大型库中也遇到过类似的冲突,其中库和最终应用程序之间的术语重叠很多,导致我到处浪费时间。
【问题讨论】:
标签: javascript inheritance ecmascript-6 es6-class