測試代碼:
<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。