1. 程式人生 > 其它 >ES6中function函式和箭頭函式的this指向

ES6中function函式和箭頭函式的this指向

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的指向。