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 and this of function scope in a function bound with bind()的副本,因为(a)问题是询问是否可以绑定多个版本的this
和(b) )接受的答案涉及使用我自己提到的event.currentTarget
或者编写一种新方法,这不是我所要求的。
然而,答案可能是否定的,不可能做到,所以我不会试图重新打开这个问题。