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。
在Javascript中,多次 bind()
是无效的。
更深层次的原因, bind()
的实现,相当于使用函数在内部包了一个 call
/ apply
,第二次 bind()
相当于再包住第一次 bind()
,故第二次以后的 bind
是无法生效的。