【发布时间】:2016-09-06 17:17:52
【问题描述】:
我有一个事件,我想为命名函数添加额外的参数。我尝试了以下两件事:
myDiv.addEventListener('click', evt.call(this, event, 'hello'));
和
myDiv.addEventListener('click', evt(event, 'hello'));
他们两个的问题是,他们会立即被调用,而不是当你点击 myDiv 时被调用,即当它应该被调用时。
如何向命名函数事件添加其他参数?
console.clear();
var myDiv = document.getElementById('myDiv');
function evt(event, param1) {
console.log(event + ' and ' + param1)
}
myDiv.addEventListener('click', evt.call(this, event, 'hello'));
#myDiv {
width: 200px;
height: 200px;
background-color: green;
}
<div id="myDiv"></div>
【问题讨论】:
-
您在寻找
bind吗? -
了解
Function#bind -
@MikeC 不,我不想改变
this。我只是想给事件函数添加更多参数 -
@MikeC 你是对的!我以为
bind只是添加this。谢谢!在性能方面,使用匿名包装器然后使用return evt.call(this, event, 'hello');或使用bind创建变量之间哪个更好? -
@Jessica 你必须确认一下,但我的假设是匿名函数更快,因为它不必绑定
this。这仅取决于您是否需要this等于某个值,以及这是否是代码的性能关键部分。
标签: javascript dom-events