首頁 > web前端 > js教程 > 主體

JavaScript 回呼函數中的「this」如何表現?

DDD
發布: 2024-11-03 22:34:03
原創
799 人瀏覽過

How does 'this' behave in JavaScript Callback Functions?

理解JavaScript 回呼函數中的「this」

在JavaScript 中,函數中「this」的值取決於函數如何決定被調用。當一個函數作為參數傳遞給另一個函數時,可以使用各種方法控制回呼函數中「this」的值。

預設行為

通常,在回呼函數中,'this'預設為全域物件或未定義(嚴格模式下)。這是因為從技術上講,回調函數並不是作為特定物件的方法來呼叫的。

使用.bind() 設定'this'

但是,.bind () 方法可用於在呼叫回調函數時將特定值綁定到“this” 。 .bind() 方法建立一個新函數,該函數始終將「this」設定為作為參數傳遞給 .bind() 的值。

範例:使用.bind()

在您的範例中:

randomFunction(this.sumData.bind(this))
登入後複製

.bind() 方法用於建立一個將'this' 綁定到obj 物件的新函數。因此,當 randomFunction 呼叫回呼函數 (this.sumData) 時,'this' 將被設定為 obj,這正是您所期望的。

與直接方法呼叫的比較

相反,在randomFunction 中使用直接方法呼叫this.sumData() 會將'this' 設定為全域物件或未定義,因為函數將作為常規函數調用,而不是作為obj 物件的方法調用。

ES6 中的箭頭函數

在 ES6 中,箭頭函數對於「this」有不同的行為。它們在定義它們的環境中維護「this」的詞彙值。這意味著無論如何調用箭頭函數,“this”始終引用同一個物件。這在某些情況下可能會有所幫助,但了解這種行為很重要。

結論

最終,回呼函數中「this」的值是由函數的呼叫方式決定。透過了解控制「this」的不同方式,您可以在 JavaScript 回呼中有效地傳遞和操作資料。

以上是JavaScript 回呼函數中的「this」如何表現?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板