var bar = function () {
console.log(this.x);
};
var foo = {
x: 3,
};
var sed = {
x: 4,
};
var func = bar.bind(foo).bind(sed);
func(); //?
var fiv = {
x: 5,
};
var func = bar.bind(foo).bind(sed).bind(fiv);
func(); //?
答案是,两次都仍将输出 3 ,而非期待中的 4 和 5 。
原因是,在Javascript中,多次 bind() 是无效的。
更深层次的原因, bind() 的实现,相当于使用函数在内部包了一个 call / apply ,第二次 bind() 相当于再包住第一次 bind() ,故第二次以后的 bind 是无法生效的。