共同点
-
可以改变函数的this指向
call和apply的第一个参数为this的指向,传null时,this指向window
var obj = {name: 'lisi'} function fn() { console.log(this) } fn.call(null) //this指向window fn.apply(null) //this指向window fn.call(obj) //this指向obj fn.apply(obj) //this指向obj
不同点
-
call传参形式是,从第二个开始一个一个传
-
apply的第二个参数为数组,数组的每一项为函数的参数
fn.call(null,1,2,3) fn.apply(null,[1,2,3])
应用
- 伪数组变为真数组 [].slice.call(eles);