日期:2014-05-18  浏览次数:20477 次

散分,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。。。。
汗。。
回答别人的问题还会少专家分。。。。。。
------解决方案--------------------

------解决方案--------------------
受益匪浅!~~
------解决方案--------------------
边学习边接分
------解决方案--------------------