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