call和apply、bind都是用来改变this的指向的,但也有一些小小的差别。
call除第一个对象参数与外,其余的参数可以单个传值;而apply必须是数组;bind也是单个传值。
但bind的区别是并没有立即执行,而是返回一个新的函数,由程序人为控制何时执行。
用例1:
var arr = [1,2,30,4,5];
console.log(Math.max.apply(null,arr));
用例2:
function fn(){
[].push.call(arguments,3);
console.log(arguments); //[1, 2, 3]
}
fn(1,2);
用例3:
var arr = ['aaabc'];
''.indexOf.call(arr);