1.函数的内部属性
函数内部有两个特殊对象:arguments和this
arguments:主要保存函数参数
function fac(num){
if(num <=1){
return 1;
}else{
return num * fac(num-1);
}
}
//定义阶乘递归算法,这个函数的执行与函数名fac紧密耦合在一起
//为了消除耦合 可以使用arguments.call.
function fac(num){
if(num <=1){
return 1;
}else{
return num * arguments.callee(num-1);
}
}
//arguments.callee.caller来访问
2.apply()和call()
每个函数都包含两个非继承而来的方法:apply()和call()
function sum(num1,num2){
return num1 + num2;
}
function calSum1(num1,num2){
return sum.apply(this.arguments);//传入arguments对象
}
function callSum2(num1,num2){
return sum.apply(this,[num1,num2]);//传入数组
}
alert(calSum1(10,10));//20
alert(callSum2(10,10));//20
//call与apply作用相同,但使用call时传递给函数的参数必须逐个列举出来
function sum(num1,num2){
return num1 + num2;
}
function callSum(num1,num2){
return sum.call(this,num1,num2);
}
//alert(callSum(10,10));//20