0

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我自己提到过的方法或编写一种新方法,这不是我要问的。

但是,答案可能是否定的,无法完成,因此我不会寻求重新提出问题。

4

0 回答 0