散分,javascript 函数一些特性
这里只记录下javascript函数的一些特性。关于对象,模拟类会在以后的笔记中记录
1.javascript函数无重载。
js不支持重载,后面函数会覆盖前面函数。它不支持重载的特点不免让人感到意外。
2.arguments对象
js不支持重载,不代表我们不能实现重载。程序员的智慧是无穷的!让我们借助arguments对
象来实现函数重载吧!arguments.length表示参数个数
function sayHi(){
if(arguments.length == 1){
if(typeof(arguments[0])=="string"){
alert("do method 1");
}else{
alert("do method 2");
}
}else if(arguments.length == 2){
alert("do method 3");
}
}
sayHi("hehe");
sayHi(1);
sayHi("傻笑",100)
3.Function 类
可以使用Function类直接创建函数:
var function_name = new Function(arg1,arg2,...argN,function_body);
例如:
var sayHi = new Function("sName","sMessage","alert(sName+','+sMessage);");
sayHi("wangping","ww");
注意:最好不要使用Function类创建函数,因为----慢!
4.由于函数名只是指向函数的变量,所以可以把函数作为参数传递给另外一个参数。
function callFun1(fnFun1,vArg){
fnFun1(vArg);
}
function doAdd(iNum){
alert(iNum+10);
}
callFun1(doAdd,10);
5.由于函数是引用类型,所以它们也有属性和方法名。
function_name.length 返回函数名为function_name的函数的参数个数。
function_name.toString() 返回函数名为function_name的函数的源代码(这个调试的时候
很有用)。
function_name.valueOf() 同function_name.toString()
代码:
function doAdd(){
alert(10);
}
alert(doAdd.valueOf());
6.闭包。闭包是javascript最容易让人误解的特点之一。所谓闭包,指词法表示包括不必计算
的变量的函数,通俗地说就是指函数能访问函数外定义的变量:
var iBaseNum =10;
function outerFun(iNum1,iNum2){
function innerFun(){
alert(iNum1+iNum2+iBaseNum)
}
return innerFun();
}
outerFun(1,1);
innerFun可以无需定义参数,得到它外部的函数iNum1,iNum2的参数值以及全局变量iBaseNum
的值。虽然难于想像,但是当你被c#等语言为了互相调用而不停地定义参数搞得抓狂时,你就
看到闭包的好处了。
------解决方案--------------------支持LZ
------解决方案--------------------接分
------解决方案--------------------学习了。。。。
------解决方案--------------------来接分了
------解决方案--------------------接分拉。
------解决方案--------------------接点分.
------解决方案--------------------接分,学习
2.arguments对象 很有启发
------解决方案--------------------接分啦
------解决方案--------------------學習,接分
------解决方案--------------------接分啦
------解决方案--------------------帮顶了
------解决方案--------------------js
------解决方案--------------------JF。。。。
汗。。
回答别人的问题还会少专家分。。。。。。
------解决方案--------------------顶
------解决方案--------------------受益匪浅!~~
------解决方案--------------------边学习边接分
------解决方案--------------------