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

Abh*_* B. 7 javascript oop javascript-events

我试图调用具有相同签名的函数.

示例:有两个具有相同名称的函数:

<script>
    var obj1,obj2,obj3,obj4,obj5;
    function OpenBox(obj1,obj2){
    // code
    }
    function OpenBox(obj1,obj2,obj3,obj4,obj5){
    // code
    }
</script>
Run Code Online (Sandbox Code Playgroud)

当我在链接的点击事件上调用功能时

<a id='hlnk1' href='#' onclick='OpenBox(this,\"abhishek\"); return false;'> Open Box </a>
Run Code Online (Sandbox Code Playgroud)

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

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

功能出了什么问题?

Mik*_*ola 13

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);
}
Run Code Online (Sandbox Code Playgroud)


mat*_*ttn 5

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