箭頭函式的this指向(二)
首先來看一個簡單的例子:
let obj = {
fun(){
setTimeout(function(){
console.log(this); // window
}, 1000);
setTimeout(() => {
console.log(this); // {fun: f}
}, 1000)
}
};
obj.fun();
通過這個例子不難看出,this指向發生改變,箭頭函式確實可以使this指向一個合理的作用域,從而我們可以得出這樣的結論:
箭頭函式的this引用的是最近作用域的中的this,箭頭函式的this指向的是外層作用域中,一層層查詢,直到有this的定義。
然後我們再來看一個稍微複雜的例子:
let obj = {
fun(){
setTimeout(function(){
setTimeout(function(){
console.log(this); // window, this 的預設繫結到window
}, 1000);
setTimeout(() => {
console.log(this); // window, 外層作用域中指向的還是window, 因為這個函式的外部this是預設繫結
}, 1000)
});
setTimeout(() => {
setTimeout(function(){
console.log(this); // window, this 的預設繫結到window
}, 1000);
setTimeout(() => {
console.log(this); // {fun: f}, 外層作用域作用this的指向是{fun:f}
}, 1000)
})
}
};
obj.fun();
根據結論和註釋認真思考一下,get到了嗎?
相關文章
- 箭頭函式this指向的陷阱函式
- 箭頭函式this指向詳解函式
- ES6 箭頭函式下的this指向函式
- setTimeout和箭頭函式巢狀中的this指向函式巢狀
- 教辨別this指向問題 包括箭頭函式函式
- 也談箭頭函式的 this 指向問題及相關函式
- javascript基礎修煉(8)——指向FP世界的箭頭函式JavaScript函式
- 箭頭函式函式
- setTimeout中的this指向問題和箭頭函式結合的區別函式
- 箭頭函式中的this函式
- es6學習_箭頭函式解決this指向問題函式
- vue2專案中 箭頭函式和普通函式里面 this的指向有何不同?Vue函式
- JS箭頭函式JS函式
- JavaScript 箭頭函式JavaScript函式
- TypeScript 箭頭函式TypeScript函式
- 箭頭函式詳解函式
- 有關箭頭函式函式
- 箭頭函式與普通函式的區別函式
- # 普通函式和箭頭函式的區別函式
- JS中的箭頭函式與thisJS函式
- 箭頭函式、簡寫函式、普通函式的區別函式
- 箭頭函式與普通函式區別函式
- ES6箭頭函式函式
- ES6箭頭函式的使用函式
- 從settTimeout到匿名函式、箭頭函式之() => {}函式
- 詳解箭頭函式和普通函式的區別以及箭頭函式的注意事項、不適用場景函式
- 箭頭函式和普通函式的10個區別函式
- 簡述箭頭函式和普通函式的區別函式
- 2020-10-18 箭頭函式函式
- JavaScript(ES6)—箭頭函式JavaScript函式
- 從一道面試題中總結JS作用域,this 指向和箭頭函式面試題JS函式
- 面試題:箭頭函式和普通函式的區別面試題函式
- Day 59/100 箭頭函式和普通函式的區別函式
- javaES6箭頭函式的全新特性Java函式
- ES 6 中的箭頭函式及用法函式
- 深入理解箭頭函式和傳統函式的區別函式
- react裡面bind與箭頭函式React函式
- PHP 7.4 新特性之箭頭函式PHP函式