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