首頁  >  文章  >  web前端  >  呼叫回調函數時,什麼決定了「this」的值?

呼叫回調函數時,什麼決定了「this」的值?

Barbara Streisand
Barbara Streisand原創
2024-11-04 03:56:02994瀏覽

What Determines the Value of `this` When a Callback Function Is Called?

何時設定 this 的值

在 JavaScript 中,this 的值由函數的呼叫方式決定。有六種主要方法可以設定它:

  1. 正常函數呼叫: this 設定為全域物件(例如,瀏覽器中的視窗)或在嚴格模式下未定義。
  2. 方法呼叫: this 設定為此方法所在的物件呼叫。
  3. .apply() 或 .call(): 設定為作為第一個參數傳遞的物件。
  4. new Operator: 當使用new 呼叫函數時,會建立一個新對象,並將this 設為該物件object.
  5. .bind() : 建立一個新的存根函數,將其綁定到作為第一個參數傳遞的物件。
  6. ES6 Fat Arrow Function : 這與封閉範圍的詞法值綁定。

的情況回調函數

在您的範例中:

<code class="javascript">randomFunction(this.sumData.bind(this));</code>
  • this.sumData.bind(this) 使用.bind()將this 綁定到obj 物件。
  • 因此,當randomFunction 呼叫回呼函數時,this 被設定為obj 因為.bind().
  • 如果你要將this.sumData.bind(this) 與callback(data) 交換,randomFunction 中的this 將被設定為全域物件(或在嚴格模式下未定義)。

這是因為callback作為this.sumData.bind(this)的參考傳遞,但是當randomFunction呼叫callback時,它根據下列規則設定this正常的函數呼叫。

以上是呼叫回調函數時,什麼決定了「this」的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn