如何在JavaScript / jQuery中实现重载? [英] How can implement overloading in JavaScript/jQuery?

查看:58
本文介绍了如何在JavaScript / jQuery中实现重载?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I trying to call functions with same signature.

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

example: There are two functions with same name:

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

当我在点击链接事件上调用函数时

When I calling function on click event of link

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

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

When I click on the above link it is calling function OpenBox(obj1,obj2,obj3,obj4,obj5){}

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

It should be call function OpenBox(obj1,obj2){} Instead.

功能出了什么问题?

推荐答案

mattn有正确的想法。因为javascript没有输入,所以这些功能是等效的。你能做的是这样的:

mattn has the correct idea. Because javascript has no typing those functions are equivalent. What you could do is something like this:

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 / jQuery中实现重载?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆