测试代码:
<script>
setTimeout(() => {
console.log(this) // window对象
}, 1000)
const obj = {
test() {
setTimeout(() => {
console.log(this) // obj对象
}, 1000)
setTimeout(function () {
console.log(this) // window对象
setTimeout(() => {
console.log(this) // window对象
}, 1000)
}, 1000)
}
}
obj.test()
</script>
运行结果:
箭头函数中的this是如何定义的呢?
由上测试可见,箭头函数中的this会向外层作用域中一层层查找,直到有this的定义。换句话说,箭头函数中的this引用的是最近作用域的this。