回答

1

使用對象作爲偵聽:

var listener = 
    { 
    handleEvent: function (evt) { 

     this === listener; // true 

     // and evt === classic event object 
    } 
}; 


document.addEventListener("click", listener, false); 

具有以下優點:

  • 它從實現的界面分離
  • 它有助於避免對DOM對象
  • 循環引用它從事件對象中分離出this

規範作者不應定義只有單個操作的回調接口,除非需要描述現有API的要求。相反,應該使用回調函數。

EventListener作爲回調接口的定義是現有API的一個示例,它需要允許具有給定屬性的用戶對象(在本例中爲「handleEvent」)被視爲實現接口。對於新的API以及沒有兼容性問題的API,使用回調函數將只允許一個Function對象(在ECMAScript語言綁定中)。

參考