Вопрос, как передать значение свойства потомкам? В качестве примера, мне нужно чтобы все потомки сохранили контекст, однако это не сводится к проблеме потери контекста. У меня есть архитектура кода:
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 принимает параметр
function SubController(app){
// передаем контекст
MainController.call(this, app) /* Отнаследовали */
dispatchEvent(this.func)
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости