如何避免命名ES6 Javascript中的类继承冲突?如何避免ES6 Javascript类继承命名冲突
大型ES6 Javascript应用程序使用大量的继承,以至于在基类中使用泛型名称可能意味着在创建派生类时会遇到麻烦。这可能是一个糟糕的类设计的产物,但似乎更多的是Javascript能够顺利扩展的问题。其他语言提供隐藏继承变量(Java)或属性(C#)的机制。缓解这个问题的另一种方法是使用不是Javascript的私有变量。
这是一个这样的碰撞的例子。 TreeObject类扩展了一个Evented对象(以继承已有的功能),但它们都使用parent
来存储它们的父项。
class Evented {
constructor(parent) {
this.parent = parent;
}
}
class TreeObject extends Evented{
constructor(eventParent, treeParent) {
super(eventParent);
this.parent = treeParent;
}
}
虽然这个例子是有点做作,我已经在像灰烬大型图书馆类似的冲突在图书馆和最终应用之间的术语相当多的重叠导致我在这里和那里浪费时间。
此问题的唯一*目标*答案。 –
我甚至可以看到这是一个很好的私有变量仿真,如果有问题的符号是文件本地的。 – Coburn
@Coburn不完全是,每个人都可以枚举任意对象的符号键属性,就像使用字符串键的属性一样。这只是将Object.getOwnPropertyNames改为Object.getOwnPropertySymbols的问题。 – Bergi