Я хотел бы создать класс ES6 с наследованием из 2 классов (из внешних библиотек), но ES6 этого не позволяет. Я тоже не могу использовать микшины. Imbrication, кажется, мой единственный вариант.Хороший шаблон javascript для объекта imbrication (имитировать множественное наследование)
Для примера предположим, что я хотел бы иметь компонент компонента пользовательского интерфейса, который непосредственно испускает события, материалы журнала и т. Д. (Для полиморфных целей).
Я хотел бы избежать следующей схеме:
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) позволяют немного более хороший образец для этой цели?
Изготовление Реагировать компонент испускают кажется, бороться с нормальной React архитектуры, но не обращая внимания, что вы определенно можете смешать по реализации эмиттер событий как если вы используете тот, который написан с учетом этого. – loganfsmyth
Это противоречит нормальной архитектуре React. Я бы хотел избежать такого типа шаблона (в котором мне нужно переписать все методы eventEmitter - на самом деле мне нужно использовать более сложный класс, который сам наследует от eventEmitter ...) – Sebastien
См. [Множественное наследование/прототипы в JavaScript] (http://stackoverflow.com/q/9163341/1529630). Вы можете использовать proxys. – Oriol