JS 中 bind 函数连续调用的问题
let a = 'a-window'
const o = {
a: 'a-o'
}
const c = {
a: 'a-c'
}
function test() {
console.log(this.a)
}
test.bind(o).bind(c)()
上述执行结果是 ‘a-o’ 而不是 ‘a-c’
原因是,在Javascript中,多次 bind() 是无效的。更深层次的原因, bind() 的实现,相当于使用函数在内部包了一个 call / apply ,第二次 bind() 相当于再包住第一次 bind() ,故第二次以后的 bind 是无法生效的。