javascript - 有没有办法传递函数引用但也给它一个参数?
问题描述
我试图概括一个函数来处理 JavaScript 中的不同事件。这意味着根据被调用的事件侦听器,我的函数需要以不同的方式运行。但是,我只能将引用传递给我的函数,这就是我的问题出现的地方。
为了让我的函数正常运行,我需要知道哪个事件处理程序调用了它。但是如果我只能通过引用传递,我就不能传递一个告诉我函数调用者是谁的参数。那么有没有办法传递函数引用但也允许它接受参数?
这是一些通用代码,希望能说明我的问题。
btn1.AddEventListener("Click", myFunction);
btn2.AddEventListener("Click", myFunction);
function myFunction(caller){
if(caller == someObject)
{
//do something
}
else
{
//do something
}
}
解决方案
在函数内部,您可以检查this
,它将引用添加到侦听器的元素,或者检查第一个参数 (the event
) currentTarget
,它将引用相同的内容:
function myFunction(event) {
if (event.currentTarget === btn1) {
// btn1 was clicked
} else {
// btn2 was clicked
}
}
推荐阅读
- node.js - 为什么我的递归函数(涉及循环中的异步调用)不返回调用者函数以继续循环?
- python - 如何将数字从for循环放入列表
- php - 基于 Elasticsearch 嵌套对象的过滤和计数操作
- python - 打印更新的字符串而不显示前一个
- node.js - 如何自定义 sequelize 枚举错误信息?
- python - Heroku Local 工作正常,它连接到 Heroku 托管的 Postgresql DB。一旦尝试部署,得到错误代码=H14 状态=503
- python - 无法在 Ubuntu 20.04 上使用 pip3 安装 pytorch
- c++ - 是否可以根据提供的大小调整环形缓冲区的大小,同时在大小减小/增加的情况下保留元素?
- android - 出现错误在 android 中运行第一个颤振项目
- algorithm - 如何在不触及 i=j 或 i=j+1 的 ( i , j ) 的情况下遍历*n 矩阵