ES6中箭頭函式中的this指向

2021-09-26 21:50:20 字數 812 閱讀 1578

箭頭函式的this指向與一般的function函式定義不同

箭頭函式的this定義:是在定義函式的時候繫結,而不是在執行的時候繫結

何為執行時繫結:來看下面的例子:

let a =1;

let obj =

}obj.

sayhi()

;/輸出的是2

一般的定義函式執行的時候決定this的執行,我們不難看出obj.say()的時候,執行了function,所以這個時候this就是obj這個物件,可以這麼理解,誰執行了this,this就指向誰,此處是obj執行了sayhi這個function,所以this指向obj這個物件。

何為定義時繫結:來看下面的例子:

let a =1;

let obj =

}obj.

sayhi()

;/輸出的是undefined

此時輸出的是undefined,而不是1或者2,這個時候就來解釋一下,es6裡面的箭頭函式的this是在定義函式的時候就定義的,所謂的定義的時候繫結,就是它繼承父親的this執行,這個地方他的父親是obj這個物件,也就是this指向window,但是這裡是let定義的a,有**塊作用著,不是全域性變數了,因此這裡的this.a輸出的就是undefined

下面例子輸出是1,注意是let定義還是var定義的:

var a =1;

let obj =

}obj.

sayhi()

;/輸出的是1

注意:實際上箭頭函式沒有自己的this,導致內部的this就是外層**的this

ES6中箭頭函式的作用

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

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

箭頭函式在es6中用的很常見,剛開始我還覺得這有什麼,就是簡寫了一下而已 後來用習慣之後就覺得是真滴方便 在說之前先簡單的概括一下。箭頭函式和普通函式的區別如下。普通函式 根據呼叫我的人 誰呼叫我,我的this就指向誰 箭頭函式 根據所在的環境 我再哪個環境中,this就指向誰 先來看乙個簡單的例子...

ES6中箭頭函式學習總結

先來看看普通的函式是怎麼定義的 通過物件字面量定義函式 再來看看es6中箭頭函式的定義 現在知道了箭頭函式和普通函式的差別,接下來分析其引數和返回值與普通函式的差異。引數問題 傳入乙個引數的寫法 返回值問題 函式體中只有1行 時 現在再來看看在標籤中箭頭函式與普通函式this的返回值 看看在物件中箭...