簡體   English   中英

具有一個參數的函數的JS事件監聽器

[英]JS Event Listener with a function that has one parameter

不知道如何為這個問題設置適當的標題,所以我想這就是為什么我找不到與之相關的任何東西。

如果標題不重復的話,標題的建議會很好。

我不知道如何使用必須傳遞一個參數的函數實際添加/刪除事件監聽器。

下面是一個簡單的示例:

window.addEventListener('resize', anFunction, false);
window.removeEventListener('resize', anFunction, false);

但是,如何設置必須包含參數的相同函數呢? 下面的示例當然是無效的,因為我不知道該怎么做。

window.addEventListener('resize', anFunction(parameter), false);
window.removeEventListener('resize', anFunction(parameter), false);

例如,您可以使用以下之一:

  • 包裝功能:

     function resizeListener() { anFunction(parameter); } 
  • Function.prototype.bind

     var resizeListener = anFunction.bind(void 0, parameter); 
  • 箭頭功能 (EcmaScript6):

     var resizeListener = e => anFunction(parameter); 

接着:

window.addEventListener('resize', resizeListener, false);
window.removeEventListener('resize', resizeListener, false);

還有一個相對較新的(IE9 +) function.prototype.bind方法

它是這樣的:

var myVar = "123";

var myHandler = function(myVar) {
    console.log("Resize handler with arg: ", myVar);
    // => Resize handler with arg: 123
};

window.addEventListener("resize", myHandler.bind(this, myVar));

它旨在用於控制回調的上下文( this值),但是它也可以很好地用於您所描述的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM