作家
登录

如何实现JS函数的重载

作者: 来源:www.28hudong.com 2013-03-30 04:02:52 阅读 我要评论

javascript不能支持函数的重载,如下:复制代码 代码如下:<script language="JavaScript"> function f(length) { alert("高为:"+length); } function f(length,width) { alert("高为:"+length+",宽为:"+width); } </srcipt>上面那段代码其实是行不通的,因为函数定义时的参数个数和函数调用时的参数个数没有任何关系。 在函数中可以用f.arguments[0]和f.arguments[1]得到调用时传入的第一和第二个参数,所以定义function(length),后面用f(10,10)调用是没有问题的。所以在上面这段代码中,第二个函数是永远不可能被调用到的,那么,要怎样才能实现像函数重载那样的功能呢? 那就是在函数定义中用f.arguments.length判断一下调用时传入的参数个数。然后对不同的情况采用不同的处理方式。 如下:复制代码 代码如下:<script language="JavaScript"> function f() { var len= arguments.length; if(1 == len) { var length = arguments[0]; var width = arguments[1]; f2(length,width); } else { var length = arguments[0]; f1(length); } } function f1(length) { alert("高为:"+length); } function f2(length,width) { alert("高为:"+length+",宽为:"+width); } </srcipt>这样,你就可以给函数f()传入一个参数也可以传入两个参数了,比如f(10)和f(10,10); 个人觉得,这样虽然可以实现重载,但也不是很好用,我们可以根据具体情况在一个函数中实现重载,如果要重载的两个函数相差较大,那就保留两个函数,而如果两个函数的实现基本差不多,那么可以在一个函数中进行判断,处理不同的部分,而不需要像上面那样写成三个函数,如下:复制代码 代码如下:<script language="JavaScript"> function f(length) { var len= arguments.length; if(1 == len) { var width = arguments[1]; alert("高为:"+length+",宽为:"+width); } else { alert("高为:"+length); } } </srcipt>

  推荐阅读

  showModelessDialog()使用详解

Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如: showModalDialog() (IE 4+ 支持)   showModelessDialog() (I>>>详细阅读


本文标题:如何实现JS函数的重载

地址:http://www.17bianji.com/kaifa2/JS/31528.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)