我閱讀了一篇文章(link),它解釋了addEventListener
的seconde參數可以是實現handleEvent
方法的函數或對象。在addEventListener中傳遞帶有handleEvent屬性和傳統回調函數的對象之間的比較
在但是等待本文的更多部分,它說使用handleEvent
可以避免移除並重新附加事件處理程序。但我想知道這是否比反覆'添加'和'刪除'更好?在整潔的代碼,性能或其他?
謝謝大家!
我閱讀了一篇文章(link),它解釋了addEventListener
的seconde參數可以是實現handleEvent
方法的函數或對象。在addEventListener中傳遞帶有handleEvent屬性和傳統回調函數的對象之間的比較
在但是等待本文的更多部分,它說使用handleEvent
可以避免移除並重新附加事件處理程序。但我想知道這是否比反覆'添加'和'刪除'更好?在整潔的代碼,性能或其他?
謝謝大家!
使用對象作爲偵聽:
var listener =
{
handleEvent: function (evt) {
this === listener; // true
// and evt === classic event object
}
};
document.addEventListener("click", listener, false);
具有以下優點:
this
規範作者不應定義只有單個操作的回調接口,除非需要描述現有API的要求。相反,應該使用回調函數。
EventListener作爲回調接口的定義是現有API的一個示例,它需要允許具有給定屬性的用戶對象(在本例中爲「handleEvent」)被視爲實現接口。對於新的API以及沒有兼容性問題的API,使用回調函數將只允許一個Function對象(在ECMAScript語言綁定中)。
參考