搜索墙首页  编程技术  java  asp  ajax  php  c/c#/c++  数据库  oracle  mysql  db2  操作系统  windows  linux  股吧
首页 > 编程 > 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~~~~
 1         
您的发言将按有关规定都会存档,您须为所发表后果负责,请您遵纪守法并注意语言文明。
标题:Function
热门关注
标题回复点击
[源码]XiorkFlow:用JavaScript写的工作流设计器73540
推荐一个不错的免费JavaScript开发工具,比aptana轻得多~~70425
jquery和prototype框架的比较。。。62370
大胆预测下JS框架的走势106357
开心网【朋友买卖、咬人、争车位】Firefox插件118307
Mootools前景?拿来主义VS重复发明轮子102301
Mootools和Jquery之间的选择问题60270
Mootools、jQuery之说三道四64246
js操作html的table,包括添加行,添加列,删除行,删除列,合并单元格(未实现)29214
关于Gecko的eval第二参数探密51209
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源