Например, есть такой объект
obj = {
x = [1,2,3],
y (){ console.log(this.x) }
z(){this.y()}
}
Если вызвать obj.y() из кода, x видна.
Если назначить obj.y на обработку слушателем любого события addEventListener(obj.y) , то x становится undefined!
Но если эту же функцию обернуть в еще одну и назначить слушателем на то же самое событие addEventListener(function(){obj.y()}) то x волшебным образом снова появляется.
Далее. this.y() вызванный из z() тоже ведет себя не так как как вызванный снаружи.
Вопрос: с чем именно я столкнулся, это баг или фича языка, как это правильно назвать и как с этим работать?