function theFunction() {
console.log(this.some)
}
//Case 1
var object = {
aFun:theFunction.bind({some: 'case 1'})
}
//Case 2
var object2 = {
aFun:theFunction
}
object2.aFun.bind({some: 'case 2'});
object.aFun();
object2.aFun();
以上返回
case 1
undefined
我希望它是
case 1
case 2
为什么这种方式与我预期的不同?我有办法解决这个问题。我大部分时间都在研究这种方法的原因。
答案 0 :(得分:1)
问题是bind
返回函数的副本,其中this
设置为第一个参数的值,而不是直接修改函数。
要获得预期的结果,您可以更改
object2.aFun.bind({some: 'case 2'})
到
object2.aFun = object2.aFun.bind({some: 'case 2'})