function foo(arg1, arg2, arg3) {
console.log(arg1);
console.log(arg2);
console.log(arg3);
console.log(this.a);
}
var obj1 = {
a: 77
}
foo.call(obj1, 1, 2, 3); //1,2,3,77
foo.apply(obj1, [11, 22, 33]); //11,22,33
var e = foo.bind({
a: 44
});
obj1.ne = e;
function fo() {
e(10, 20, 30);
}
fo(); //10,20,30,44
obj1.ne(10,20,30);//10,20,30,44
call和apply是同样的用法。bind返回一个函数,这个函数强行绑定this到指定对象上,不管在哪一个context上调用,都不会再修改this的值。