call和apply的作用:改变this的指向。
call()和apply()的基本区别:在于将参数传递给函数。
call():使用其自有的实参列表作为函数的参数;
apply():要求以数组的形式传入参数。
语法:
fun.call(thisobj,arg1,arg2) ;当后面参数个数确定时用call,参数之间用逗号连接
fun.apply(thisobj,[arg1,arg2]);当后面参数个数不确定时用apply,参数通过数组形式输入
例子:
function add(c, d){
return this.a + this.b + c + d;
}
var object = {a:1, b:3};
add.call(object, 5, 7); // 1 + 3 + 5 + 7 = 16
add.apply(object, [10, 20]); // 1 + 3 + 10 + 20 = 34
使用call和apply后,this指向变成了thisobj,如果不传参数,指向则为window。