该bind
方法的第一个参数是新this
值。问题是这似乎取代了自然this
值。特别是,如果用于事件侦听器,则不再是触发元素。
例如:
var h1=document.querySelector('h1')
h1.onclick=doit.bind(this,42); // or null, or h1
function doit(a) {
alert(this); // Not automatically the calling element
alert(a);
}
现在我知道在这种情况下我可以将第一个参数设置为元素h1
;我也可以event.target
用来获取实际目标。但是,这并不总是很方便,例如在将事件侦听器分配给多个或匿名元素时。
问题是,有没有一种简单的方法来告诉bind
使用默认值this
?
谢谢
注意:这并不是严格意义上的重复Use bound this 和 this of function scope in a function bound with bind() as (a) 问题询问是否可以绑定多个版本this
和 (b) 接受的答案涉及使用event.currentTarget
我自己提到过的方法或编写一种新方法,这不是我要问的。
但是,答案可能是否定的,无法完成,因此我不会寻求重新提出问题。