Прошло некоторое время, но у MDN есть супер объяснение. Это помогло мне больше, чем здесь.
MDN :: EventTarget.addEventListener - значение «this» внутри обработчика
Это дает отличный альтернатива функции handleEvent.
Это пример с привязкой и без:
var Something = function(element) {
this.name = 'Something Good';
this.onclick1 = function(event) {
console.log(this.name); // undefined, as this is the element
};
this.onclick2 = function(event) {
console.log(this.name); // 'Something Good', as this is the binded Something object
};
element.addEventListener('click', this.onclick1, false);
element.addEventListener('click', this.onclick2.bind(this), false); // Trick
}
Проблема в приведенном выше примере заключается в том, что вы не можете удалить слушателя со связью. Другое решение использует специальную функцию handleEvent, чтобы поймать любые события: