1.没有重载
在JS中,函数名相当于一个指针,指向函数对象的地址,当声明两个同名函数时,后声明的函数会覆盖先声明的函数。
2.函数的内部属性
1.arguments对象
类数组对象,包含传入函数的所有参数。
callee:是一个指针,指向拥有这个arguments对象的函数。
<!--经典的递归函数(低耦合)--> function factorial(num){ if(num<=1) { return 1; } else{ return num*arguments.callee(num-1); } }
2.this
指向调用当前函数的对象
3.caller
保存调用当前函数的函数的引用,如果在全局作用域内调用此函数,会返回null
3.函数的方法 (apply/call-设置函数内this对象的值)
应用某个对象的一个方法,使用另一个对象替换当前对象
apply(thisObj [, argArray]) / call(thisObj [,arg1[,arg2...] ])
如果argArray不是一个有效数组或者不是argument对象,会报TypeError错误
如果没有指定thisObj,就会将Global对象当成thisObj
window.color="red";
var o={color="blue"};
function sayColor(){
alert(this.color);
}
sayColor(); //red
sayColor.call(this); //red
sayColor.call(o); //blue