ES6中箭頭函式this指向的問題

2021-08-17 22:40:55 字數 694 閱讀 4802

箭頭函式在es6中用的很常見,剛開始我還覺得這有什麼,就是簡寫了一下而已

後來用習慣之後就覺得是真滴方便

在說之前先簡單的概括一下。箭頭函式和普通函式的區別如下。

普通函式:根據呼叫我的人(誰呼叫我,我的this就指向誰)

箭頭函式:根據所在的環境(我再哪個環境中,this就指向誰)

先來看乙個簡單的例子

document.onclick = function () 

document.onclick = () =>

這兩個你執行的時候普通函式this指向的是htmldocument,箭頭函式指向的是window。

如果還覺得不明顯再看下列**

document.onclick = function () 

arr.a(); //1,2,3

}

這裡先是使用普通函式,輸出了1,2,3。

下面我換成箭頭函式

document.onclick = function () 

arr.a(); //htmldocument

}

這裡輸出就是htmldocument了,因為正如前面所說,箭頭函式的this是由它所處的環境決定的

ES6中箭頭函式中的this指向

箭頭函式的this指向與一般的function函式定義不同 箭頭函式的this定義 是在定義函式的時候繫結,而不是在執行的時候繫結 何為執行時繫結 來看下面的例子 let a 1 let obj obj.sayhi 輸出的是2一般的定義函式執行的時候決定this的執行,我們不難看出obj.say 的...

ES6中箭頭函式的作用

那為什麼在es6中引入了箭頭函式呢?最主要的目的就是解決this指標的問題。我們知道在es6中,我們可以建立乙個class,如果我們預設在其裡面加入乙個函式的話,其必須在呼叫的時候,必須繫結this指標,否則不能訪問當前類的例項裡面的屬性。下面舉乙個具體的例子,為什麼其能解決this指標的問題。比如...

ES6箭頭函式this指向

普通函式中的this 1.this總是代表它的直接呼叫者 js的this是執行上下文 例如 obj.func 那麼func中的this就是obj 2.在預設情況 非嚴格模式下,未使用 use strict 沒找到直接呼叫者,則this指的是 window 約定俗成 3.在嚴格模式下,沒有直接呼叫者的...