Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript和jquery中的方法和函数重载_Java_Javascript_Jquery_Methods_Overloading - Fatal编程技术网

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

javascript和jquery中的方法和函数重载,java,javascript,jquery,methods,overloading,Java,Javascript,Jquery,Methods,Overloading,我可以在java脚本和JQuery中使用方法和函数重载吗?如果可能,这意味着如何做到这一点 我开发了以下代码,但我认为这是错误的,我的错误是什么我不知道,请澄清 function isnull(txtid, errid, err) { if (trimString(get(txtid).value) == '') { return false; } return true; } function

我可以在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;
    }

所有时间函数只调用第二个函数,如果有任何想法这样做,JavaScript中没有真正的函数重载,因为JavaScript没有对参数进行类型检查或所需数量的参数,您可以只使用一个
isnull
实现,它可以通过检查参数的类型、存在或数量来调整传递给它的参数

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

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

function foo(a, b, opts) {

}


foo(1, 2, {"method":"add"});
foo(3, 4, {"test":"equals", "bar":"tree"});

然后,您可以在您的方法中以任何方式处理它。[切换、if-else等]

执行重载的技巧如下:

function over_load(object, name, args) {
  var prev = object[name];
  object[name] = function(){
  if (args.length == arguments.length)
    return fn.apply(this, arguments);
  else if (typeof prev == 'function')
    return prev.apply(this, arguments);
  else throw "Wrong number of args"; 
  };
}

但是根据答案,检查参数长度会使其变慢,因此有更好的方法来实现重载,即通过传递对象。。(请检查链接以供参考)

查看此请您详细说明“通过检查参数的类型、存在或数量传递给它”是的,Raje我的答案的链接中有详细说明。他的意思是:f(a:Int){bla;}和f(b:String){blu;}对于JS来说,这是完全相同的,所以他将进入他能找到的第一个f函数-->显然他总是执行“bla”。您需要检查唯一f函数内部的类型:f(arg:Object){if(typeof(arg)=='String')blu;else if(typeof(arg)=='Integer')bla;else alert('not implemented');}[此处的代码不准确]。你真的应该考虑使用ByBee的答案与通用opysies,我读到,很久以前…谢谢你,先生。。感谢你指出这一点,但是知识必须被分享,我不能继续发现新事物…@ShreyosAdikari,现在可以了吗?