如何实现JS函数的重载


Posted in Javascript onSeptember 22, 2006

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>
Javascript 相关文章推荐
让网页根据不同IE版本显示不同的内容
Feb 08 Javascript
基于jQuery的自动完成插件
Feb 03 Javascript
JS实现弹性漂浮效果的广告代码
Sep 02 Javascript
如何检测JavaScript的各种类型
Jul 30 Javascript
JS操作input标签属性checkbox全选的实现代码
Mar 02 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
Nov 06 Javascript
详解JavaScript中的数组合并方法和对象合并方法
May 11 Javascript
详解vue中axios的封装
Jul 18 Javascript
Node.js console控制台简单用法分析
Jan 04 Javascript
js 计算图片内点个数的示例代码
Apr 04 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 Javascript
微信小程序基础教程之echart的使用
Jun 01 Javascript
扩展String功能方法
Sep 22 #Javascript
js实现ASP分页函数 HTML分页函数
Sep 22 #Javascript
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
Sep 22 #Javascript
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
Sep 22 #Javascript
prototype1.4中文手册
Sep 22 #Javascript
prototype 源码中文说明之 prototype.js
Sep 22 #Javascript
showModelessDialog()使用详解
Sep 21 #Javascript
You might like
生成缩略图
2006/10/09 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
php显示页码分页类的封装
2017/06/08 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python编写Windows Service服务程序
2018/01/04 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
python按比例随机切分数据的实现
2019/07/11 Python
python list转置和前后反转的例子
2019/08/26 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python小项目之五子棋游戏
2019/12/26 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
应届生的求职推荐信范文
2013/11/30 职场文书
优秀求职自荐信怎样写
2013/12/18 职场文书
专升本个人自我评价
2013/12/22 职场文书
全民健身日活动方案
2014/01/29 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
教师见习报告范文
2014/11/03 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
Fluentd搭建日志收集服务
2022/09/23 Servers