Вопрос, как передать значение свойства потомкам? В качестве примера, мне нужно чтобы все потомки сохранили контекст, однако это не сводится к проблеме потери контекста. У меня есть архитектура кода:
function App() {
// ~ ... какие-то свойства
let mWindow = new MainController(this), /* новый экземпляр, для примера передаем в него контекст */
subController = new SubController();
let event = new Event('myEvent');
addEventListener('myEvent', function () {subController.render('add')});
/* Важный метод */
this.getEvent(){
return event; /* вызывает срабатывание addEventListener -> subContrl.render() */
};
this.run(){
mWindow.init();
}
}
function MainController(app){ /* В данной строке я хочу передать что-то (Например, контекст)*/
this.app = app; /* сохраняю это*/
this.content_gen = function(arg) {
dispatchEvent(this.app.getEvent("main"));
}
};
this.init = function (){ /* SOMETHING */};
}
function SubController(){
MainController.call(this) /* Отнаследовали */
this.render = function(arg) {console.log(this)}; /*this: {SubController; app = undefined}*/
/* информация (контекст) в obj.app не передана */
/* Понятно что я его и не передавал. Как это сделать?*/
/* По аналогии с тем что выше, получается необходимо создать экземпляр и передать в него this.app*/
/* Либо же сделать SubController(app), но откуда запишется значение в app??*/
}
Возможно, кстати, есть более умный вариант передачи контекста при данной архитектуре (в таком случае добавлю еще один вопрос).
MainController.call(this) /* Отнаследовали */? – Grundy Sep 07 '18 at 10:17getEventуundefined. Если не падает - очевидно SubController вообще нигде не используется – Grundy Sep 07 '18 at 17:51thisтак же как и в MainController – Grundy Sep 07 '18 at 18:20let mWindow = new MainController(this), subController = new SubController(this);и сам конструктор сделай как советуют в ответе – Grundy Sep 07 '18 at 18:21