javascript和jquery中的方法和函数重载
我可以在java脚本和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
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,现在可以了吗?