如何在JavaScript / jQuery中实现重载?

我试图用相同的签名来调用函数。

例如:有两个同名的函数:

<script>
    var obj1,obj2,obj3,obj4,obj5;
    function OpenBox(obj1,obj2){
    // code
    }
    function OpenBox(obj1,obj2,obj3,obj4,obj5){
    // code
    }
</script>

在链接的点击事件调用功能的时候

<a id='hlnk1' href='#' onclick='OpenBox(this,"abhishek"); return false;'> Open Box </a>

当我点击上面的链接时,它调用函数OpenBox(obj1,obj2,obj3,obj4,obj5) {}

它应该是调用函数OpenBox(obj1,obj2) {}而是。

功能出了什么问题?


mattn有正确的想法。 因为JavaScript没有输入,所以这些功能是相同的。 你可以做的是这样的:

function OpenBox_impl1(obj1,obj2){
    // code
}
function OpenBox_impl2(obj1,obj2,obj3,obj4,obj5){
    // code
}

function OpenBox(obj1, obj2, obj3, obj4, obj5) {
    if(arguments.length == 2)
        return OpenBox_impl1(obj1, obj2);
    else
        return OpenBox_impl2(obj1,obj2,obj3,obj4,obj5);
}

javascript无法在同一范围内定义重复函数。 检查arguments.length是2或5。


@abshik,

没有像c#或java类似的东西。 Javasccript的行为就是这样

function Test(arg1 ,arg2 , arg3, arg4)
{

}

当你调用这个函数时,你可以通过以下方式调用

Test(arg1);
Test(arg1,arg2);
Test(arg1,arg2,arg3);
Test(arg1,arg2,arg3,arg4);

但顺序很重要,所以你可以用上面的方式来实现功能。

链接地址: http://www.djcxy.com/p/51981.html

上一篇: How can implement overloading in JavaScript/jQuery?

下一篇: Javascript Functions and optional arguments