Javascript .bind()与事件处理程序

Javascript .bind()与事件处理程序,javascript,javascript-events,function-binding,Javascript,Javascript Events,Function Binding,假设我有以下简化的函数 var ex = document.getElementById('exampleElement'), data = { foo: 'Sample text' }; ex.addEventListener('click', function(evt, d) { evt.stopPropagation(); this.innerHTML = d.foo; }.bind(ex, null, data)); 我意识到将ex绑定

假设我有以下简化的函数

var ex = document.getElementById('exampleElement'),
    data = {
        foo: 'Sample text'
    };

ex.addEventListener('click', function(evt, d) {
    evt.stopPropagation();
    this.innerHTML = d.foo;
}.bind(ex, null, data));
我意识到将
ex
绑定到
这个
在这种特殊情况下有点多余,但是如何绑定
数据
参数,并且仍然保持
事件
参数不被破坏

我似乎到处都找不到答案。

根据

arg1,arg2

调用目标函数时,的参数在前面加上提供给绑定函数的参数

var ex = document.getElementById('exampleElement'),
    data = {
        foo: 'Sample text'
    };

ex.addEventListener('click', function(evt, d) {
    evt.stopPropagation();
    this.innerHTML = d.foo;
}.bind(ex, null, data));
这意味着您的当前值将出现在事件对象之前。请参阅此小提琴以了解示例:

var clickme=document.querySelector(“clickme”);
clickme.addEventListener(“单击”),函数(值、事件){
var newDiv=document.createElement(“div”);
newDiv.innerHTML=value+“
”+event.target.toString(); 文件.body.appendChild(newDiv); }.bind(单击“当前值”);
这个
d
参数是什么?您无法控制如何调用该函数。为什么不使用闭包呢?d是数据,在bind函数中参数化了。不行!这为我解决了一切。非常感谢您的研究!