当我使用bind()函数时,遇到了我目前不知道的情况。 有人可以给我和解释为什么这个例子是这样的吗? 显然,传递给绑定函数的内联对象仅在第一次迭代中初始化,然后保留引用。 我是不是能够找到的有关这个的任何文件,如果你可以点我朝着正确的方向我会:-)使用内联对象定义的Javascript Function.prototype.bind()
class test {
addLetter(element) {
console.log('addLetter', this.str);
this.str += element + ',';
}
foo() {
let arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
arr.forEach(this.addLetter.bind({
str: ''
}));
}
}
let a = new test();
a.foo();
OUTPUT:
addLetter
addLetter a,
addLetter a,b,
addLetter a,b,c,
addLetter a,b,c,d,
addLetter a,b,c,d,e,
addLetter a,b,c,d,e,f,
可能的重复[如何“this”关键字工作?](https://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work) – Erazihel
您的代码可以被解构为'让cb = this.addLetter.bind({...}); arr.forEach(CB);'。 - 是的,你只会创建一个*一个绑定对象的回调。 – deceze
事实上,我的错误是考虑forEach作为一个正常的循环,谢谢。 –