我有一些示例代码,绑定事件处理程序的方式如下:
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
,但在最后一种情况下,传递的参数似乎替换了预期的事件对象。我怎样才能在不将事件处理程序重写为函数表达式的情况下保留事件对象?