在JavaScript中,this關鍵字指的是擁有目前正在執行的函數的物件。但是,在非同步回呼中或將函數作為參數傳遞給其他函數時,this 的值可能會遺失。
當函數作為以下方法呼叫時一個物件(例如,object.method()),這正確地引用了該物件。但是,當函數以獨立函數(例如 method())呼叫時,this 預設為全域物件。
為了防止此問題,bind() 允許您在下列情況下手動指定 this 的值:將來呼叫函數。它傳回一個新函數,其 this 值綁定到指定物件。
在範例 2 中,bind() 用於建立一個新函數 (storeMyName2),該函數具有其 this 引用綁定到 myName。這確保了當調用新函數時,無論如何調用,this 都將引用 myName。
在範例 3 中,storeMyName3 設定為下列結果直接呼叫 myName.getName() 。這意味著 storeMyName3 包含傳回值,即字串「Tom」。它不是像storeMyName和storeMyName2這樣的函數,所以不涉及this的概念。
以上是為什麼 JavaScript bind() 需要在非同步回呼和函數參數中保留「this」值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!