如何实现JS函数的重载

千靥南墙

千靥南墙

2016-02-19 12:00

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐如何实现JS函数的重载,无聊中的都看过来。
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
展开更多 50%)
分享

猜你喜欢

如何实现JS函数的重载

Web开发
如何实现JS函数的重载

js实现ASP分页函数 HTML分页函数

Web开发
js实现ASP分页函数 HTML分页函数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用JS实现的一个include函数

Web开发
用JS实现的一个include函数

JScript重载的另类实现

Web开发
JScript重载的另类实现

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

代码精简的可以实现元素圆角的js函数

Web开发
代码精简的可以实现元素圆角的js函数

JS匿名函数

Web开发
JS匿名函数

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

浅析Eclipse建模框架(EMF)及其动态能力

浅析Eclipse建模框架(EMF)及其动态能力

瞬间凋谢的爱情 - QQ情侣分组

瞬间凋谢的爱情 - QQ情侣分组
下拉加载更多内容 ↓