Source: ссылка
Summary:
this.overlay.addEventListener('click', function(){
this.closed();
});
В данном коде не срабатывает событие на отключение оверлэея(удаление класса), ну если конечно использовать стрелочную функцию, типа
this.overlay.addEventListener('click', ()=>{
this.closed();
});
то все ОК.
Ну мне просто нужно понять, как это решить без стрелочных функций. Я просто угадал, когда использовал arrow func
, но есть такие методы call
или bind
(я точно не знаю) которые смогут помочь исправить это, ВОЗМОЖНО Я ОШИБАЮСЬ. Хочу докопаться до сути!
Помогите чайнику!
this.overlay.addEventListener('click', (function(){
this.closed();
}).bind(this));
или
var that = this;
this.overlay.addEventListener('click', function(){
that.closed();
});
Попробуй вот такой вариант.
this.overlay.addEventListener('click', function(){
this.closed();
}.bind(this));
У тебя теряется контекс. Тебя надо вызвать bind() и оперделить ему контекст(this).
У стрелочный функции логика работы отличается.Они лексически привязаны к значению this (но не привязаны к собственному this, arguments, super, или new.target).
До появления стрелочных функций, каждая новая функция имела своё значение this (новый объект в случае конструктора, undefined в strict режиме вызова функции, контекст объекта при вызове функции как "метода объекта" и т.д.). Это очень раздражало при использовании объектно-ориентированного стиля программирования.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Помогите оптимизировать создание таблицы с результатами, перебирая содержимое объектов