forEach和addEventListener方法中“ this”的行为

时间:2019-07-15 09:06:58

标签: javascript object foreach this addeventlistener

编辑:这不是关于“ this”关键字在不同上下文中的一般行为的问题。我的问题是,这里的2种行为背后是否存在一个共同的基本逻辑-是因为“ this”仅在调用该对象的方法时才绑定到该对象,而forEach()是数组的方法? > 为什么当我使用:

var tag = ["a","b","c"];

tag.forEach(function () { 
  console.log(this)
});

this指的是全局对象,因为该函数已绑定到全局对象,但是当我使用时:

element.getElementById("id").addEventListener("click", function () {
  console.log(this.value);
});

this引用id元素,即使它在函数中?是因为forEach是数组的方法而不是对象的方法?

1 个答案:

答案 0 :(得分:1)

在DOM事件处理程序this中,将其设置为触发事件的元素: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this#As_a_DOM_event_handler