1var bar = function(){ 2 console.log(this.x); 3} 4var foo = { 5 x:3 6} 7var sed = { 8 x:4 9} 10var func = bar.bind(foo).bind(sed); 11func(); //? 12 13var fiv = { 14 x:5 15} 16var func = bar.bind(foo).bind(sed).bind(fiv); 17func(); //?
参考答案:
答案是,两次都仍将输出 3 ,而非期待中的 4 和 5 。
原因是,在Javascript中,多次 bind() 是无效的。
更深层次的原因, bind() 的实现,相当于使用函数在内部包了一个 call / apply ,第二次 bind() 相当于再包住第一次 bind() ,故第二次以后的 bind 是无法生效的。
最近更新时间:2021-08-15