平時用this有些混亂,所以寫個總結,
沒有箭頭函式之前,我們說this就是函式運行時所在的環境物件,但是在箭頭函式中this就是定義時所在的物件,先說大家熟知的:函式運行時所在的環境物件,
1、作為函式呼叫,this指向全域物件

2、作為物件的方法呼叫,該物件即為呼叫背景關系,this指向該物件,

3、作為建構式呼叫,建構式試圖初始化這個新創建的物件,并將這個物件作為其呼叫背景關系,this 指向這個新創建的物件,

4、通過函式的call/apply方法間接呼叫, call/apply方法的第一個引數是呼叫背景關系,在函式體內,通過this獲得對它的參考,

箭頭函式中this物件就是定義時所在的作用域,也就是說箭頭函式本身沒有this,內部的this就是外層代碼塊作用域中的this,
5、獨立函式

該箭頭函式在全域環境中定義,即this指向window
6、物件的方法

如上所示,foo在全域中定義,所以this指向window,那么如何使this指向obj?
根據上一篇介紹,當函式作為物件的方法呼叫時this指向該物件,可以這樣改寫:

func在foo呼叫時定義,此時的foo所在作用域為obj,因此this指向obj
7、建構式,因箭頭函式沒有this,固不能用作建構式,否則會報錯

8、bind/call

如上:func定義在全域,因此列印0,同物件方法,我們可以通過如下改寫,列印出1

更多前端開發干貨
免費獲取【30G從入門到精通前端學習檔案】
免費獲取【50本前端系列電子書教程】
或:關注、轉發、私信回復“1”即可獲取免費下載地址
或:添加錘子個人QQ:990179203



轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/63871.html
標籤:JavaScript
上一篇:iview DatePicker daterange data month UTC格式化問題
下一篇:node.js的安裝與配置
