為什麼JavaScript中的bind()是必要的?
在JavaScript中,「this」指的是擁有正在執行的程式碼的物件。但是,當函數作為回呼或事件處理程序傳遞時,呼叫環境可能與預期環境不同。這會導致“this”引用全域物件而不是預期物件的問題。
使用 Bind 解決問題
JavaScript 的 bind() 方法可讓您在函數中明確設定「this」的值。透過將函數綁定到特定對象,可以確保在呼叫該函數時,「this」將引用該對象。
範例:
<code class="js">var myName = { name: "Tom", getName: function() { return this.name; } }; var storeMyName2 = myName.getName.bind(myName); console.log(storeMyName2()); // Output: "Tom" (correct)</code>
透過將 getName() 綁定到 myName,保留對「this」的引用,並且該函數正確傳回「Tom」。
替代解決方案:範例 3
中範例 3,storeMyName3 被指派立即呼叫 myName.getName() 的結果。這意味著 storeMyName3 的值是字串,而不是函數。因此,「this」的值沒有問題,因為該值是在執行時確定的,而不是在呼叫函數時確定的。
Bind() 和範例 3 的比較
Bind() 和範例 3 實現相同的目標,但透過不同的機制。 Bind() 允許您設定函數的上下文,而無需立即呼叫它,而範例 3 透過呼叫函數並儲存結果來設定上下文。
以上是為什麼 JavaScript bind() 對於控制函數中的「this」至關重要?的詳細內容。更多資訊請關注PHP中文網其他相關文章!