2つのクラス(外部ライブラリから)からの継承を使用してES6クラスを作成したいと思いますが、ES6ではそれを許可しません。ミックスインを使うことはできません。 Implicationは私の唯一の選択肢のようです。オブジェクトimbricationのための良いjavascriptパターン(複数の継承をシミュレート)
たとえば、イベント、ログなどを直接出力するUIコンポーネントクラスがあるとします(多態的な目的のために)。
私は、次のパターンを避けたい:
class UIComponent extends React.Component {
constructor(props) {
super(props);
this.ee = new EventEmitter();
}
/*
* methods of my UIComponent
*/
emitThis(val) {
this.emit('thisEvent', val);
},
onThat(func) {
this.on('thatEvent', func);
},
doThis() {
this.specificLog("i'm doing this");
// do stuff
}
/*
* Here i just implement all methods of EventEmitter...
*/
on(...args) {
this.ee.on(...args);
}
once(...args) {
this.ee.once(...args);
}
emit(...args) {
this.ee.emit(...args);
}
/* this goes on and on... */
}
のJavascript(ES5、ES6、ES2015)は、この目的のためにいくつかのよりよいパターンを許可していますか?
が発する通常のリアクトアーキテクチャと戦うようですが、あなたは間違いなくとしてイベント・エミッターの実装に混在させることができる、ということを無視しますそれを念頭に置いて書かれているものを使用している限り。 – loganfsmyth
これは、通常のリアクションアーキテクチャに反するものです。私はこのようなパターンを避けたいと思います(eventEmitterのすべてのメソッドを書き直す必要があります。実際には、それ自体がeventEmitterから継承したより複雑なクラスを使用する必要があります)。 – Sebastien
[JavaScriptの多重継承/プロトタイプ] http://stackoverflow.com/q/9163341/1529630)。プロキシを使うことができます。 – Oriol