连续 bind()多次,输出的值是什么?
js
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` 是无法生效的。