首頁 > web前端 > js教程 > 如何使用「addEventListener」控制事件處理程序中「this」的值?

如何使用「addEventListener」控制事件處理程序中「this」的值?

Linda Hamilton
發布: 2024-10-29 05:38:30
原創
277 人瀏覽過

 How Can I Control the Value of

Handler 中 this 的值使用 addEventListener

使用 addEventListener 方法處理事件時,handler 函數中 this 的值可以是混亂的根源。預設情況下,「this」指引發事件的元素。但是,有一些技術可以修改此行為並確保“this”引用所需的物件。

在帶有ticketTable物件的特定範例中,問題出現在handleCellClick函數中。當作為事件處理程序呼叫時,「this」指向接收點擊事件的元素,而不是ticketTable物件。

要解決這個問題,您可以使用bind方法,它允許您指定值「this」用於特定功能。透過將「this」綁定到ticketTable對象,您可以確保「this」在handleCellClick函數中引用正確的物件。以下是程式碼的更新版本,示範了這一點:

<code class="js">ticketTable.prototype.render = function(element) {
  // ...

  // Bind "this" to ticketTable object for handleCellClick function
  cell1.addEventListener("click", this.handleCellClick.bind(this), false);

  // ...
}

ticketTable.prototype.handleCellClick = function() {
  // Now, "this" references the ticketTable object within the handler
  alert(this.tickets.length);
}</code>
登入後複製

透過將「this」綁定到ticketTable對象,您可以按預期在handleCellClick函數中存取其屬性和方法。

或者,您可以使用handleEvent函數捕獲任何事件並明確定義“this”的值:

<code class="js">ticketTable.prototype.handleEvent = function(event) {
  switch (event.type) {
    case "click":
      // "this" references the ticketTable object
      alert(this.tickets.length);
      break;
    // ...
  }
}</code>
登入後複製

在這種情況下,“this”在處理事件時將始終引用ticketTable對象,無論引發事件的元素為何。

以上是如何使用「addEventListener」控制事件處理程序中「this」的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板