JS乾貨分享—-this指向

平時用this有些混亂,因此寫個總結。前端

沒有箭頭函數以前,咱們說this就是函數運行時所在的環境對象,可是在箭頭函數中this就是定義時所在的對象,先說你們熟知的:函數運行時所在的環境對象。app

一、做爲函數調用,this指向全局對象函數

 

二、做爲對象的方法調用,該對象即爲調用上下文,this指向該對象。學習

 

三、做爲構造函數調用,構造函數試圖初始化這個新建立的對象,並將這個對象做爲其調用上下文,this 指向這個新建立的對象。this

 

四、經過函數的call/apply方法間接調用, call/apply方法的第一個參數是調用上下文,在函數體內,經過this得到對它的引用。spa

 

箭頭函數中this對象就是定義時所在的做用域,也就是說箭頭函數自己沒有this,內部的this就是外層代碼塊做用域中的this。對象

5、獨立函數blog

該箭頭函數在全局環境中定義,即this指向window教程

 

6、對象的方法作用域

如上所示,foo在全局中定義,因此this指向window,那麼如何使this指向obj?

根據上一篇介紹,當函數做爲對象的方法調用時this指向該對象,能夠這樣改寫:

func在foo調用時定義,此時的foo所在做用域爲obj,所以this指向obj

 

7、構造函數,因箭頭函數沒有this,固不能用做構造函數,不然會報錯

 

 

8bind/call

如上:func定義在全局,所以打印0,同對象方法,咱們能夠經過以下改寫,打印出1

 

 

更多前端開發乾貨

免費獲取【30G從入門到精通前端學習文檔】

免費獲取【50本前端系列電子書教程】

或:關注、轉發、私信回覆1」便可獲取免費下載地址

或:添加錘子我的QQ:990179203

 

相關文章
相關標籤/搜索