在事件處理程序回調中保留上下文:「self = this」技術
在JavaScript 中,實例方法作為事件處理程序回調可能會導致作用域變化。如同提供的程式碼所示,事件綁定需要一個變數來保留呼叫上下文,從而導致賦值“var self = this”。
雖然有效,但這種方法引起了對其有效性的擔憂。更通用的解決方案解決了核心問題:在嵌入式函數中引導變數。
在 JavaScript 中,閉包允許存取外部變數。然而,像“this”和“arguments”這樣的偽變數需要小心處理。將它們指派給父函數中的別名可確保它們在嵌入式函數中的可用性。
範例
要在嵌入式函數中使用“this”,請將其分配給變數並使用別名:
var that = this; function xyz() { // "this" is different here! --- but we don't care! console.log(that); // now it is the right object! function qwe() { // "this" is different here too! --- but we don't care! console.log(that); // it is the right object here too! } ... };
這種方法不限於「this」; 「參數」需要類似的處理,以確保嵌入式函數中的存取一致。
以上是如何在 JavaScript 中保留事件處理程序回呼中的上下文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!