setInterval和setTImeout中的this指向问题

231 阅读1分钟

在setInterval和setTimeout中所传入函数的this,永远指向window!

const obj = {
  num: 10,
  hello: function () {
    console.log(this)       // obj
    setTimeout(function () {
      console.log(this)     // window
    })
  },
}
obj.hello()
 

const obj = {
  num: 10,
  hello: function () {
    console.log(this)     // obj
    setTimeout(() => {
      console.log(this)    // obj
    })
  },
}
obj.hello()

因为 setTimeout 这个方法是挂载到 window 对象上的。setTimeout 执行时,执行回调函数,回调函数中的this指向 调用setTimeout的对象(window)