addEventListener, вызывая функцию с аргументом, теряется родитель узла

<div class="parent">
  <a class="child" id="child">Child</a>
</div>

<div class="parent2">
  <a class="child2" id="child2">Child with argument</a>
</div>

child.addEventListener('click', Handling);
child2.addEventListener('click', Handling(3));

function Handling(arg) {
var _this = this;
  if (_this.parentElement) {
    alert(_this.parentElement);
  }
  else {alert("no parent, arg="+arg);}
}

https://jsfiddle.net/Nata_Hamster/o7xf5j9s/

Если вызывать функцию Handling без аргумента, родитель возвращается. При попытке вызывать с аргументом он теряется.


Ответы (1 шт):

Автор решения: Yugofx

В первом случае вы правильно устанавливаете функцию на клик. Во втором случае вы устанавливаете на клик результат этой функции, то есть undefined. Поэтому при попытке ее вызвать, вы получите TypeError. Хотите вызвать коллбек с аргументом, используйте Handling.bind(child2, 3). Это создаст новую функцию с установленным в первом аргументе контекстом, а остальное - это как раз параметры вашей функции.

→ Ссылка