方法和函数重载在JavaScript和jQuery中

我可以在java-script和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"; 
  };
}

但根据Javascript中的函数重载 - 最佳实践,检查参数长度使其变慢,所以有更好的方法来实现重载,即通过传递一个对象..(检查链接以供参考)

链接地址: http://www.djcxy.com/p/51993.html

上一篇: method and function overloads in javascript and jquery

下一篇: Javascript: Configuration Pattern