接上篇文章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