arguments.callee 消除耦合现象
例子
function factorial(num){ if(num<=1){ return 1;} else{ return num*arguments.callee(num-1) //arguments保存函数参数,callee是个指针,指向拥有这个arguments对象的函数 } }
在这个重写够的factorial()函数的函数体内,没有再引用函数名factorial。这样无论函数使用时使用的是什么名字,都可以保证正常完成递归调用。
函数内部另一个特殊对象是this.
this引用的是函数据以执行的环境对象——或者可以说是this值(当在网页的全局作用域中调用函数,this对象引用的就是window)。
window.color="red"; var o ={color:"blue"}; function sayColor(){ alert(this.color); } sayColor(); //"red" o.sayColor=sayColor; o.sayColor();//"blue"