call()方法
第一个实参是要调用对象的母对象,比如f.call( obj ); 就是调用obj对象的f方法,第一个参数之后的所有实参就是要传入待调用的函数的值
比如:1
2
3
4
5function list() {
return Array.prototype.slice.call( arguments); //这里就是调用arguments对象的slice方法
}
var list1 = list(1, 2, 3); // [1, 2, 3]
apply()方法
同call()方法,不同之处是call方法接受逗号分割的参数,而apply接受一个数组或者是类数组对象,上面的例子使用apply方法改写则如下:1
2
3
4
5function list() {
return Array.prototype.slice.call( arguments); //这里就是调用arguments对象的slice方法
}
var list1 = list( [ 1, 2, 3] ); // [1, 2, 3]