2016-08-18 31 views
0

以下の例のように、いくつかのクラスの統計とプロトタイプを1つのmasterclassにマージしようとしています。es6クラス継承

これは実際に可能ですか? またはAlltogether.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

+2

オブジェクトのポイントは、これらの1,2,3クラスを定義する必要がないためです。クラスを定義するOption、インスタンスを作成する(オプション)。 AllTogetherはOptionsを継承し、すべてのOptionsが継承するプロトタイプメソッドを持っています。 –

+0

私には1つの質問しかありません。どうして? – christopher

答えて

1

はそれを簡単に)

Alltogether.dosomething(: 私の目標は、のようなものを行うには静とプロトタイプをマージすることができているイムです使用する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(サブ)クラスを使用することができます。そうでない場合は、3つの番号付きプロパティの代わりに配列を使用することも検討してください。