前端this使用總結

東方孤獨發表於2020-12-10

1.全域性環境下:this始終指向window

2.函式直接使用時,
2.1 嚴格模式下:this為undefined
2.2 非嚴格模式:this為全域性window

3.物件中使用時,
3.1 物件內部方法的this指向呼叫此方法的物件本身
3.2 多層巢狀物件,內部方法的this指向最近的呼叫物件
3.3 原型鏈中的this,也指向呼叫它的物件

4.建構函式中的this
4.1 如返回值不是物件,則this指向建立的物件本身
4.2 如人為指定返回為物件,則this指向該物件
4.3 call&apply時,this繫結到第一個引數上
4.4 bind時則函式中的this永遠繫結在第一個引數上,不會更改

5.DOM中的this
5.1 事件處理函式中的this指向觸發該事件的元素本身
5.2 內聯事件
5.2.1 程式碼被內聯處理函式呼叫,this指向DOM元素
5.2.2 程式碼在函式內部執行,this等同於函式直接呼叫,此時非嚴格模式下指向window,嚴格模式下為undefined

6.setTimeout && setInterval 時函式中的this指向window,可通過bind改變內部的this指向

7.箭頭函式中的this
箭頭函式不繫結this,會捕獲上下文的this,故call() / apply() / bind()對於箭頭函式只作引數傳入,並不會更改指向

*** 物件中,若某一屬性值為箭頭函式,執行此屬性方法時,this指向全域性window;若屬性值為普通函式,執行此屬性方法,this指向呼叫它的物件

相關文章