箭頭函式中的this指向

2021-10-20 19:14:23 字數 1407 閱讀 9789

箭頭函式是es6新出的一種函式格式的寫法;

文件對箭頭函式的解釋:箭頭函式相當於匿名函式,並且簡化了函式定義。箭頭函式有兩種格式,一種只包含乙個表示式,連和return都省略掉了。還有一種可以包含多條語句,這時候就不能省略和return:

比如我們常見的foreach方法:

var arr =[1

,2,3

,4,5

]arr.

foreach

((item,index)

=> console.

log(item)

)

上面就是用foreach遍歷輸出陣列;

簡單地介紹了箭頭函式,回到主題,說說箭頭函式中的this指向的問題,既然說了箭頭函式相當於匿名函式,那箭頭函式中的this指向當然也就會箭頭函式中的this指向。

這個問題在給原型上新增某個方法的時候就會明顯,就用foreach的原生來說明,下面我們自己封裝乙個my_foreach方法:

array.prototype.

my_foreach

=function

(fn)

}var arr =[1

,2,3

]arr.

my_foreach

((item,index)

=> console.

log(item)

)

上面函式列印的結果:

顯而易見,函式內部的this指向的就是呼叫my_foreach的arr這個陣列。

下面我們使用箭頭函式來實現:

array.prototype.

my_foreach

=(fn)

=>

}var arr =[1

,2,3

]arr.

my_foreach

((item,index)

=> console.

log(item)

)

列印的結果:

不出所料,在函式內部的this指向的是window;

所以,在使用箭頭函式的時候我們還需要考慮函式內部的this指向的問題,若疏忽了這一點,在開發後部分階段會出現很大的問題。

箭頭函式中this的指向

箭頭函式中this的指向 在箭頭函式中沒有this,箭頭函式中的this是它捕獲過來的,注意 1.箭頭函式中的this一旦捕獲將無法在改變 2.箭頭函式是在它被宣告時開始捕獲的 3.什麼是宣告時呢?就是箭頭函式被呼叫時 4.捕獲的是離它最近的父級的this的指向 舉個栗子 var a 測試 let ...

箭頭函式中的this指向

let a a.bar undefinedbar函式中的this指向父作用域,而a物件沒有作用域,因此this不是a,列印結果為undefined function a a.prototype.bar console.log this.foo let a new a a.bar undefined原...

箭頭函式中的this指向

箭頭函式中的this指向 如果是箭頭函式,this指向是,父級程式的,this的指向 如果父級程式是乙個函式,函式也是有this的,那麼箭頭函式的this,就是父級函式的this 如果父級程式不是函式,例如物件,陣列等,沒有this指向,箭頭函式的this指向是window頂級物件 function...