我有一些示例代码绑定事件处理程序,如下所示:
var h1=document.querySelector('h1');
h1.onclick=doit;
function doit(x) {
console.log(x);
}
当事件处理程序被触发(通过单击h1
元素)时,输出是一个event
对象,正如预期的那样。
如果我按如下方式绑定事件处理程序:
h1.onclick=doit.bind(h1);
我得到相同的结果。
但是,如果我按如下方式绑定它:
h1.onclick=doit.bind(h1,1);
我明白1
了,第一个参数后h1
。在所有情况下, 的值this
都正确设置为h1
,但在最后一种情况下,传递的参数似乎替换了预期的事件对象。
如何在不将事件处理程序重写为函数表达式的情况下保留事件对象?