方法和函数重载在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