Если somefunction
является свойством объекта, и вы хотите, чтобы этот объект был ссылочным внутри функции (через this
), то вы не можете использовать тот же this
для элемента, который вызвал событие- каким-то образом вам нужно будет иметь значение по умолчанию this
внутри обработчика функции.Вот одна из возможностей, использовать анонимную функцию, которая захватывает this
и событие из обработчика и вызывает метод объекта с такими параметрами:
const obj = {
bar(listenerElement, event) {
console.log('this.data: ' + this.data);
console.log('listener element ID: ' + listenerElement.id);
console.log('event target ID: ' + event.target.id);
},
data: 'data'
}
document.querySelector('#outer').addEventListener('click', function(event) {
obj.bar(this, event);
}, false);
<div id="outer">
<div id="inner">click me</div>
</div>