例子:
1.var show=function (){alert(arguments[0]);alert(this);};
var changeThis=function(){alert("Change This Object!");};
show.apply(changeThis,[1,2]);
show.call(changeThis,[1]);
两个函数执行结果都为:
1
function(){alert("Change This Object!");}
2.var show=function (){alert(arguments[1]);};
var changeThis=function(){alert("Change This Object!");};
show.apply(changeThis,[1,2]);
show.call(changeThis,[1,2]);
show.call(changeThis,1,2);
apply执行结果为:
2
call执行结果为:
undefined
2
由此可见,对于第一个参数意义都一样,而对第二个参数:apply传入的是一个参数数组,而call的参数传入是从第二个参数(changeThis后的参数)开始的,但是不能将传入的参数写成数组,否则该参数只被认为是一个参数。
例如:
var show=function (){alert(arguments[0]);};
show.call(this,[1,2]);
结果为:
1,2