何時設定 this 的值
在 JavaScript 中,this 的值由函數的呼叫方式決定。有六種主要方法可以設定它:
-
正常函數呼叫: this 設定為全域物件(例如,瀏覽器中的視窗)或在嚴格模式下未定義。
-
方法呼叫: this 設定為此方法所在的物件呼叫。
-
.apply() 或 .call(): 設定為作為第一個參數傳遞的物件。
-
new Operator: 當使用new 呼叫函數時,會建立一個新對象,並將this 設為該物件object.
-
.bind() : 建立一個新的存根函數,將其綁定到作為第一個參數傳遞的物件。
-
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中文網其他相關文章!