在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)