我正在尝试将几个类的静态和原型合并到一个主类中,如下面的示例所示。
这真的可能吗?我的目标是,我能够合并静态和原型来做一些事情,比如:
Alltogether.dosomething()或Alltogther.o3.myoption1
// class1
class Option1 {
constructor(properties) {
this.o = {};
this.o.myoption1 = properties.o.myoption1;
this.o.myoption2 = properties.o.myoption2;
}
dosomething1() {
return "o1";
}
}
// class2
class Option2 {
constructor(properties) {
this.o2 = {};
this.o2.myoption1 = properties.o2.myoption1;
this.o2.myoption2 = properties.o2.myoption2;
}
dosomething2() {
return "o2";
}
}
// class3
class Option3 {
constructor(properties) {
this.o3 = {};
this.o3.myoption1 = properties.o3.myoption1;
this.o3.myoption2 = properties.o3.myoption2;
}
dosomething3() {
return "o3";
}
}
// now i want to create a super class with the 3 classes above
// however this doesnt work...
class Alltogether extends (Option1, Option2, Option3) {
constructor(properties) {
//........
}
}
// My goal is that im able to merge the statics and prototypes to do things like
// Alltogether.dosomething() // o2
// or Alltogether.o3.myoption1
发布于 2016-08-19 05:01:38
让它变得简单并使用composition over inheritance
class Option {
constructor(properties) {
this.myoption1 = properties.myoption1;
this.myoption2 = properties.myoption2;
}
dosomething() {
return "o";
}
}
class Alltogether {
constructor(properties) {
this.o = new Option(properties.o)
this.o1 = new Option(properties.o1)
this.o2 = new Option(properties.o2)
}
}如果您的子类实际上是不同的,那么您可以使用多个Option (dosomething)类。如果没有,您甚至应该考虑使用数组而不是三个编号属性。
https://stackoverflow.com/questions/39026834
复制相似问题