Почему prototype не видит переменную из констуктора? learn.javascript.ru/play/HviXUb
При клике на блок должно вывестись Hello World, но world = undefiend. Если просто в конструкторе вызывать this.hello(), то все работает
---
пока из вариантов расматриваю такое решение, но может можно как-то еще?...
var that = this;
...
this.div.on('click', function(){
that.hello()
})
...

21 Авг 2019 в 07:09
205 +1
0
Ответы
1

Да, использование переменной "that" для доступа к контексту объекта внутри функции обратного вызова - это довольно стандартный способ решения проблемы области видимости в JavaScript. Однако существуют и другие способы решения данной проблемы.

Один из таких способов - использование стрелочных функций ES6. Стрелочные функции не имеют собственной области видимости и вместо этого заимствуют контекст окружающего кода. В вашем случае, использование стрелочной функции вместо анонимной функции при обработке события клика могло бы выглядеть следующим образом:

this.div.on('click', () => {
this.hello();
});

Таким образом, внутри стрелочной функции контекст будет совпадать с контекстом родительской функции (в данном случае, экземпляра объекта), и доступ к переменной "hello" не потеряется.

Также стоит заметить, что это не единственные способ решения данной проблемы, но стрелочные функции обычно предпочтительнее из-за их краткости и лаконичности.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир