首頁  >  文章  >  web前端  >  為什麼 JavaScript bind() 需要在非同步回呼和函數參數中保留「this」值?

為什麼 JavaScript bind() 需要在非同步回呼和函數參數中保留「this」值?

DDD
DDD原創
2024-10-25 04:31:29380瀏覽

Why is JavaScript bind() Required for Preserving 'this' Value in Asynchronous Callbacks and Function Arguments?

為什麼JavaScript需要bind()?

在JavaScript中,this關鍵字指的是擁有目前正在執行的函數的物件。但是,在非同步回呼中或將函數作為參數傳遞給其他函數時,this 的值可能會遺失。

bind() 的需要

當函數作為以下方法呼叫時一個物件(例如,object.method()),這正確地引用了該物件。但是,當函數以獨立函數(例如 method())呼叫時,this 預設為全域物件。

為了防止此問題,bind() 允許您在下列情況下手動指定 this 的值:將來呼叫函數。它傳回一個新函數,其 this 值綁定到指定物件。

範例 2 中的解決方案

在範例 2 中,bind() 用於建立一個新函數 (storeMyName2),該函數具有其 this 引用綁定到 myName。這確保了當調用新函數時,無論如何調用,this 都將引用 myName。

與範例 3 的比較

在範例 3 中,storeMyName3 設定為下列結果直接呼叫 myName.getName() 。這意味著 storeMyName3 包含傳回值,即字串「Tom」。它不是像storeMyName和storeMyName2這樣的函數,所以不涉及this的概念。

以上是為什麼 JavaScript bind() 需要在非同步回呼和函數參數中保留「this」值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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