Некий условный плагин, который инициализируется для какого-то элемента, вешает на него обработчики события и имеет возможность самовыпилиться, убрав эти обработчики.
В обработчике события нужен доступ к этому объекту (this).
Вот минимальный пример кода:
class Foo {
constructor(elem) {
this.elem = elem;
this._runEvent = (event) => {
this._eventHandler(event);
};
this._bindEvents();
}
destroy() {
this._unbindEvents();
}
_bindEvents() {
this.elem.addEventListener('click', this._runEvent);
}
_unbindEvents() {
this.elem.removeEventListener('click', this._runEvent);
}
_eventHandler(event) {
console.log(this);
}
}
Получается, что я для каждого нового экземпляра этого класса создаю метод
_runEvent
, который просто вызывает метод из прототипа. Но благодаря этому я могу этот метод как ставить обработчиком события, так и убирать.
Если бы не требовался метод
_unbindEvents
, то сразу бы ставилась например стрелочная функция, вызывающая
_eventHandler
.
Собственно вопрос - нет ли более правильной альтернативы?