Я знаю, что есть много вопросов о Stack о JS Scope ... но я столкнулся с конкретной проблемой, с которой я не могу окутать голову. У меня есть модуль Javascript, который выглядит примерно так (хотя и значительно упрощены):Понимание комплексного охвата в модулях и плагинах Javascript
Теперь, вот что я не понимаю, если я перееду, что «проблемный блок» вне вызова Ajax, и положить его вернитесь в init(), он отлично работает. Однако, насколько я могу судить, в его текущем местоположении, scope (_this = this) является точно такой же, как и в функции init.
И более конкретно, проблема я испытываю, что обработчик «OnChange» не срабатывает, когда код находится внутри обработчика Ajax, но плагин экземпляра еще создается и функционирует как он в противном случае следует , Однако, если я переведу его на init(), обработчик onChange запускается без каких-либо изменений в код
Любая помощь, которая поможет мне обернуть мою голову вокруг этого, будет очень благодарна. Спасибо!
хотел также добавить, что проще использовать '' bind', call' и/или 'apply' при вызове функции с другим контекстом, а не caching 'this' с hacky var, вроде' self', '_this',' that' и т. д. – Data
Мой единственный вопрос: «module.exports» должен быть чем-то более похожим на это: 'module.exports = init; ' ? –
Почти, это будет: 'module.exports = init;' i.e без круглых скобок. Изменить, вы изменили свой комментарий, пока я написал это, поэтому игнорируйте. – Data