call和apply都是用来指定this的指向的。其第一个参数都是某个参数,后面的参数就是传递给函数的参数了。只不过传递的形式不一样,apply是以数组的形式传递。
var a=[1,2,3];
function add(x,y,z){
this.push(x+y+z)
}
add.call(a,1,2,3)
alert(a)//1,2,3,6
add.apply(a,[1,2,3])
alert(a)//1,2,3,6
也就是函数参数多的话用apply比较好。
结合ES6的扩展运算符
call也可以接受数组
var a=[1,2,3];
function add(x,y,z){
this.push(x+y+z)
}
add.call(a,...[1,2,3])
alert(a)//1,2,3,6