接上篇文章JavaScript重识bind、call、applybash
function foo() {
console.log("name: " + this.name);
}
var obj = { name: "obj" }, obj2 = { name: "obj2" }, obj3 = { name: "obj3" };
foo.bind(obj).call(obj2) // name: obj
foo.bind(obj).bind(obj2)() // name: obj
复制代码
因此为何bind只有第一次bind生效呢?app
这里想简单解释一下; foo.bind(obj).bind(obj2)() 从左到右执行;函数
bind分解.png post
因此不管foo执行多少bind 都是第一次bind的对象!this
后面的bind只能改变上一个bind的this指向,例如foo.bind(obj).bind(obj2) 改变的是 foo.bind(obj)的this指向是obj2; 最终foo执行是的绑定的this是由第一次bind的对象决定,即foo.bind(obj)的objspa