如何实现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函数

C#中的函数重载

电脑网络
C#中的函数重载

lolAD刺客新符文搭配推荐

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

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

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

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

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