var one = function(){
console.log(this.x);
}
var two = {
x: 1
}
var three = {
x: 2
}
var fn = one.bind(two).bind(three);
fn(); //?
var four = {
x: 3
}
var fn = one.bind(two).bind(three).bind(four);
fn(); //?
***bind 是返回对应函数,便于稍后调用。
两次都仍将输出 1 ,而非期待中的 2 和 3。原因是,在Javascript中,多次 bind() 是无效的。更深层次的原因, bind() 的实现,相当于使用函数在内部包了一个 call / apply ,第二次 bind() 相当于再包住第一次 bind() ,故第二次以后的 bind 是无法生效的。