ES6中function函式和箭頭函式的this指向
阿新 • • 發佈:2022-05-10
This函式的四種呼叫方式
1.純粹的函式呼叫:
這是函式的最通常用法,屬於全域性性呼叫,這是this就指全域性(瀏覽器中為window,node中為global)
2.作為物件方法的呼叫:
函式還可以作為某個物件的呼叫,這時this就指這個上級物件
3.作為建構函式呼叫:
通過這個函式生成一個新物件(object)。這是this就指這個新物件。
4.apply呼叫:
apply()是函式物件的一個方法,它的作用是改變函式的呼叫物件。因此,this指的就是這第一個引數。
1.純粹的函式呼叫:
通過上下兩圖程式碼的調整可以證明此時this就是全域性物件
2.作為物件方法的呼叫:
此時的this指的是obj這個物件
3作為建構函式呼叫:
JS中,我們通過new關鍵詞來呼叫建構函式:此時this會繫結在該新物件上。
4.apply呼叫
此時this指的就是這一個引數obj。
如何確定thi函式的指向:
預設模式下,test——>window 以函式形象呼叫
嚴格模式下,(設定了 “use strict"),this為undefined
p.test()——>p 以方法的形式呼叫
new test()——>新的建立的物件 以建構函式形式呼叫
p.call(obj)——> obj 使用call和apply方法呼叫
this的最終指向始終是呼叫的他的物件。
預設指向定義它時,所處上下文的物件的this指向(這裡指的是整個箭頭函式處在那個上下文),偶爾沒有上下文物件時指向window.
即使是call,apply,bind等方法也不能改變箭頭函式this的指向。