function sum(num1,num2){
return num1+num2;
}
function callSum1(){
return sum.apply(this,arguments);
}
function callSum2(){
return sum.call(this,arguments[0],arguments[1]);
}
function callSum3(num1,num2){
return sum.call(this,num1,num2);
}
注意:(1).apply([thisObj [,argArray] ]);和call([thisObject[,arg1 [,arg2 [,...,argn]]]]);作用相同,不同点在于第二个参数apply是以数组传入,而call需要一个一个参数传入。
(2).arguments可以获取传入的实参,即使函数没有传入形参。如果没有使用arguments,就应该传入形参,通过形参获取实参。
var color="red";
function showColor(){
alert(this.color);
}
function Circle(color){
this.color=color;
//this.showColor=showColor;
}
var c=new Circle("yellow");
showColor.apply(this);
showColor.apply(c);
(1).apply和call的第一个参数代表作用域,使用apply和call对象就不需要定义方法了,只需要指定作用域即可
(2).当作用域是this,即代表window对象,就会调用全局变量的color=“red”,当作用域是对象c的时候,就会调用对象的属性color=“yellow”