![]() |
| 首页 > 编程 > ajax > JavaScript |
1
1楼 j357777842 2007-12-26
声明:我写的博客就是我的学习笔记,让我在忘记的时候可以在任何时候,任何地方,打开连接就可以看到,让我想起忘记的东西.
我的博客通常都有资料来源,只用于学习,没有任何其他目的,如果有版权问题,请跟我联系,如果对资料有什么疑问,可以留言! 我的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一样了呢? 2楼 afcn0 2007-12-26
当然不一样,函数的length在js里面是一个比较没用的东西,js函数的参数很宽松,你传不传传多少都没关系,只是一个是否有显示参数变量获取参数的问题,没有参数名也可以通过arguments对象取出来,arguments.length当然和函数.length不一样,函数.length是你的函数定义时候起了几个参数名称,arguments.,length是你在这次函数调用里面到底传近来了多少个参数,两者一点关系没有
3楼 ajaxgo 2007-12-27
lz是要告诉我们函数的知识,还是在问问题??话说上面那段见的眼熟,好像是《ajax基础教程》里面的???《javascript高级程序设计》里面的???还是《ajax实战》里面的???哎~~~what ever~~~~
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源
| |||||