首页 > 解决方案 > 有没有办法传递函数引用但也给它一个参数?

问题描述

我试图概括一个函数来处理 JavaScript 中的不同事件。这意味着根据被调用的事件侦听器,我的函数需要以不同的方式运行。但是,我只能将引用传递给我的函数,这就是我的问题出现的地方。

为了让我的函数正常运行,我需要知道哪个事件处理程序调用了它。但是如果我只能通过引用传递,我就不能传递一个告诉我函数调用者是谁的参数。那么有没有办法传递函数引用但也允许它接受参数?

这是一些通用代码,希望能说明我的问题。

btn1.AddEventListener("Click", myFunction);
btn2.AddEventListener("Click", myFunction);

function myFunction(caller){
   if(caller == someObject)
   {
    //do something
   }
   else
   {
    //do something
   }
}

标签: javascript

解决方案


在函数内部,您可以检查this,它将引用添加到侦听器的元素,或者检查第一个参数 (the event) currentTarget,它将引用相同的内容:

function myFunction(event) {
  if (event.currentTarget === btn1) {
    // btn1 was clicked
  } else {
    // btn2 was clicked
  }
}

推荐阅读