Function

声明:我写的博客就是我的学习笔记,让我在忘记的时候可以在任何时候,任何地方,打开连接就可以看到,让我想起忘记的东西.
我的博客通常都有资料来源,只用于学习,没有任何其他目的,如果有版权问题,请跟我联系,如果对资料有什么疑问,可以留言!
我的email:herhun@163.com

摘自:js高级程序设计

Function可以表示开发者定义的任何函数.用Function直接创建函数的语法如下:
var function_name=new Function(argument1,argument2,......,argumentN,function_body);
示例:

var sayHi =new Function("sname","sMessage","alert(\"Hello\"+sname+\",\"+sMessage+\"!\");");

sayHi("这是第一个参数sname","这是第二个参数sMessage");

这种写法比较困难,但这有助于理解函数只不过是一种引用类型,它们的行为与用Function类明确创建的函数行为相同,
function doAdd(iNum){

alert(iNum+100);
}

function doAdd(iNum){
alert(iNum+10);
}
doAdd(10);//它打出来的结果是20
第二个函数重载了第一个函数,使doAdd(10)输出了"20",而不是"100".
用下面的形式来写:
doAdd=new Function("iNum","alert(iNum+100)");
doAdd=new Function("iNum","alert(iNum+10)");
doAdd(10);
很显然,doAdd的值被改成指向不同对象的指针.函数名只是指向函数对象的引用值,行为就像其他指针一样.甚至可以使两个变量指向同一个函数:
doAdd=new Function("iNum","alert(iNum+100)");
var alsoDoAdd=doAdd;
doAdd(10); //输出110
alsoDoAdd(10); //输出110
变量doAdd被定义为函数,即指向Function对象的指针,然后alsoDoAdd被声明为指向同一函数的指针.用这两个函数都可以执行该函数的代码.输出结果相同.因为,如果函数名只是指向函数的变量,那么就可以理解把函数作为函数参数传递给另一个函数了.

doAdd=new Function("iNum","alert(iNum+100)");
function callAnotherFunc(fnFunction,arg){
fnFunction(arg);
}
callAnotherFunc(doAdd,10);

所以,个人认为,把我们自己定义的函数可以理解为Function对象的实例.

Function有length属性,它声明了函数期望的参数个数.

function doAdd(iNum){
alert(iNum+10);
}

alert(doAdd.length);
这是不是又和函数内部调用的arguments的length一样了呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值