當this 爭論時:理解回調函數中的'this'
在JavaScript 中,函數調用中this 的值由執行該函數的上下文。然而,當將 this 作為參數傳遞時,規則可能會變得複雜。
具體來說,會出現以下情況:當回呼函數作為參數傳遞時,為什麼不將 this 設定為呼叫的函數回呼?
理解'this' 的層次結構
要理解為什麼this 被設定在它所在的位置,我們需要考慮函數呼叫的層次結構:
但是,在 randomFunction 呼叫之前回調,它使用 this.sumData.bind(this) 建立一個新函數(規則#5)。這個新函數呼叫原始回呼函數,但現在將 this 綁定到 obj(傳遞給 bind 的參數)。
回調函數的意義
傳遞方法時作為回調,了解它不會被稱為 obj.method() 至關重要。這意味著 this 在回呼函數中不會有正確的值。若要解決此問題,您可以使用 bind() 在回呼中設定 this 的值。
其他有用的註釋
以上是為什麼「this」不引用 JavaScript 回呼中的呼叫函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!