javascript和jquery中的方法和函数重载

3 javascript java methods jquery overloading

我可以在java脚本和JQuery中使用方法和函数重载,如果可能的话,它意味着如何做到这一点.

我开发了以下代码,但我认为这是错误的,我不知道的是什么错误,请澄清一下

    function isnull(txtid, errid, err) {  
        if (trimString(get(txtid).value) == '') {
            return false;
        }
        return true;
    }

    function isnull(txtid) {
        if (trimString(get(txtid).value) == '') {        
            return false;
        }
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

所有的时间函数只调用第二个,如果有任何想法这样做

Shr*_*ari 6

在JavaScript中没有真正的函数重载,因为javascript没有对参数进行类型检查或者需要参数的数量,你可以isnull通过检查参数的类型,存在或数量来实现一个可以适应传递给它的参数的实现.

使用参数进行函数重载的最佳方法是不检查参数长度或类型; 检查类型只会让你的代码变慢,你可以享受Arrays,nulls,Objects等的乐趣.

大多数开发人员所做的是将对象作为其方法的最后一个参数.这个对象可以容纳任何东西

function foo(a, b, opts) {

}


foo(1, 2, {"method":"add"});
foo(3, 4, {"test":"equals", "bar":"tree"});
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的方法中处理它.[切换,if-else等]

  • 他的意思是:f(a:Int){bla;}和f(b:String){blu;}对于JS它绝对相同所以他将进入他能找到的第一个f函数 - >显然他总是执行"喇嘛".你需要检查一个唯一的f函数内的类型:f(arg:Object){if(typeof(arg)==='String')blu; else if(typeof(arg)==='Integer')bla; else alert('not implemented');} [此处的代码不准确].你真的应该考虑使用blackbee的答案和通用选项 (2认同)