首頁 >web前端 >js教程 >如何在 JavaScript 中保留事件處理程序回呼中的上下文?

如何在 JavaScript 中保留事件處理程序回呼中的上下文?

Linda Hamilton
Linda Hamilton原創
2024-11-06 04:22:02716瀏覽

How Can I Preserve Context in Event Handler Callbacks in JavaScript?

在事件處理程序回調中保留上下文:「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中文網其他相關文章!

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