Do You Use “Fake” Function Overloading In JavaScript?
在C中,我可能有一个这样的重载函数:
1 2 | public string OverLoad(string str1) {return str1;} public string OverLoad(string str1, string str2) {return str1+str2;} |
我知道javascript没有内置的对重载函数的支持,但是是否有人能解决这个问题来实现重载函数功能?
我很好奇:
1.)对速度的影响
2.)使用不同函数名与重载的原因
您似乎可以检查参数是否未定义,并在javascript中"伪造"该功能。对我来说,只通过改变参数数量就可以轻松地改变函数,这将是一个很大的优势。
在JavaScript中,传递参数的趋势是对象的属性,即有一个参数是对象,因此可以以任何顺序指定任何内容。使用这种方法,您可以检查"undefined"是否存在,并且您的函数的行为可以根据。
如果您在不同的情况下有相当大的行为,您可以通过将每个情况拆分成一个单独的函数来扩展这个想法,然后由您的主"重载"函数调用该函数。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
您也可以基于数字参数或参数数量使用相同的方法。您可以在这里阅读关于使用参数的信息。
这是很常见的,甚至没有人注意到。
例如,在jquery中,
1 2 | .on( events [, selector ] [, data ], handler(eventObject) ) .on( events [, selector ] [, data ] ) |
号
对第一个窗体的调用类似于
关键字参数(使用单个对象参数模拟)也很常见,例如
所以是的,这在所有地方都是这样做的,但是您将其称为"过载"是一种类别混淆。JS既不是静态类型的,它的函数也没有固定数量的函数参数。在调用时,您可以根据需要提供任意多个或任意少的参数,而不管函数声明了什么。您应该将函数声明中的参数列表作为
对速度的影响是如此之小以至于根本不需要考虑。
至于什么时候做,什么时候使用一个单独的功能,这完全是一个程序的清晰性和可用性问题,可能会受到广泛的意见。
你必须在