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

method and function overloads in javascript and jquery

本文关键字:函数 重载 方法 jquery javascript      更新时间:2023-09-26

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

然后你可以在你的方法中处理它。[Switch, 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 -最佳实践,检查参数长度使它变慢,所以有一个更好的方法来实现重载,即通过传递一个对象。