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

2023-11-23

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

Example:有两个同名的函数:

<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){}

应该是调用函数打开框(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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript/jQuery 中实现重载? 的相关文章

随机推荐