javascript - .bind 有问题

标签 javascript

我有以下内容:

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/

相关文章:

javascript - 开发新的 Angular 应用程序 - 为 Angular 2 做准备

javascript - 如何在多边形下方绘制多段线?

javascript - yeoman/JS : Repeating HTML blocks in a HTML template - compiling to eventually integrate with Wordpress?

javascript - jQuery 向上键/向下键按键检测不起作用?

javascript - 我的样式表没有加载,但路径是正确的

javascript - 使用php从文件夹获取图像并使用javascript将其添加到html

javascript - Globalize.js - cldr.once 不是函数

javascript - 我如何在 JavaScript 中的线程之间进行通信?

javascript - 使用feathersjs 设置生产

javascript - typescript 类型检查机制