例如:(1)、function factorial(num){
if(num<=1){
return 1;
}else{
return num*factorial(num-1);
}
}//此时是递归算法
var trueFactorial=factorial;//将factorial复制给trueFactorial
factorial=function(){
return 0;
}//覆盖factorial函数
alert(trueFactorial(5));//0;因为辞职factorial函数已经发生变化,原本在factorial里面调用本身,此时也已经变了
alert(factorial(5));//0
;
(2)、function factorial(num){
if(num<=1){
return 1;
}else{
return num*arguments.callee(num-1);//指向拥有arguments函数本身,不会因函数名变化而受影响
}
}
var trueFactorial=factorial;
factorial=function(){
return 0;
}
alert(trueFactorial(5));//120;
alert(factorial(5));//0
2、函数内部属性 arguments是类数组对象,主要用途是保存函数参数,但这个对象中有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数
原文:http://www.cnblogs.com/danmohendt/p/3920154.html