事件處理程序中的變數作用域:「this」難題
在JavaScript 中,用作事件處理程序回呼的實例方法可能會導致作用域問題。當事件處理程序被觸發時,「this」的範圍從預期實例轉移到呼叫回呼的元素。這就需要使用變數來「捕獲」並維護實例的範圍。
宣告「self」變數以別名「this」並將其傳遞給事件處理程序的技術,如程式碼片段,是一個常見的解決方案。然而,其非傳統的外觀可能會引起人們對其適用性的擔憂。
「self」別名的替代方案:
核心問題不是 jQuery 特有的,而是與 JavaScript 的閉包有關行為。雖然閉包允許嵌入函數從其父作用域存取變量,但這個偽變量的行為有所不同。如程式碼所示:
// Attempt to use "this" in embedded functions function xyz() { console.log(this); // Incorrect }
此行為需要修改方法:
// Assign "this" to a variable (i.e., abc) and use the variable instead var abc = this; function xyz() { console.log(abc); // Correct }
透過使用 abc 為「this」起別名,可以保留閉包對預期實例範圍的存取。此技術適用於其他偽變量,例如“參數”。
因此,雖然「self」別名方法是實用的,但將「this」明確分配和引用到變數的替代方法提供了更有效的方法。事件處理程序回呼函數中範圍問題的傳統且強大的解決方案。
以上是如何在 JavaScript 事件處理程序中保留實例範圍:使用變數別名擷取「this」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!