在JavaScript中,「this」的值是由函數的呼叫方式決定的。如果直接呼叫函數,則可以控制「this」的值。
但是,當函數作為回調或事件處理程序傳遞時,外部程式碼會呼叫它們,從而導致意外的「this」值。為了確保“this”引用特定對象,您可以使用 .bind 方法。
.bind 允許您在呼叫函數之前設定「this」的值,從而有效地將其綁定到該物件。
這個問題是由 JavaScript 的執行環境決定「this」值的方式所造成的。當一個函數被定義時,「this」是未定義的。如果函數作為物件的方法調用,「this」將引用該物件。
但是,當函數被獨立呼叫或作為回調呼叫時,「this」通常會引用全域物件(或在嚴格模式下未定義)。為了確保一致性和正確的行為,透過 .bind 等方法控制「this」的值至關重要。
範例 3 中,storeMyName3 直接呼叫getName 函數,傳回 myName.name 的值。這個結果被指派給 storeMyName3,它不是函數,而是一個值。
相反,在範例 1 和 2 中,storeMyName 和 storeMyName2 是 getName 函數本身的參考。呼叫它們時,您執行該函數並獲得結果。
範例 2 在呼叫函數之前使用 .bind(myName) 將「this」的值設為 myName。這確保了 this.name 引用 myName.name。
因此,範例 3 不會遇到「this」問題,因為它稍後不會呼叫函數,而範例 1 和 2 需要 .bind 來將來呼叫時明確設定「this」值。
以上是JavaScript 何時需要綁定「this」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!