我有以下内容:
for( var i=0; i<array.length; i++) {
if(array[i] instanceof Buff) {
someDiv[i].onclick = buffTest.bind(i);
}
}
我真的很想做类似 someDiv[i].onclick = function() { buffTest(i) };
的事情,但是为了真正了解错误和改进,我想了解我做错了什么。我在某种程度上使用了错误的绑定(bind)吗?我忘了说,我遇到的问题是:
function buffTest(yy){
console.log(yy);
}
console.log 返回一个 MouseEvent 而不是 i 中的数字。非常感谢对此事的任何帮助,在此先感谢您提供任何信息。
最佳答案
可能只是因为 bind
的第一个参数是this
值(value)。
你可能想要这个:
someDiv[i].onclick = buffTest.bind(someDiv[i], i);
编辑:如@bfavarette 所述,如果您不介意 this
将在您的听众中,您也可以通过 null
而不是 someDiv[i]
, 但由于使用此方法附加事件监听器时,您期望 this
作为听者所依附的对象,我在我提供的示例中坚持了这种行为。
关于javascript - .bind 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709278/