时间:2021-05-18
javascript不能支持函数的重载,如下:
复制代码 代码如下:
<scriptlanguage="JavaScript">
functionf(length)
{
alert("高为:"+length);
}
functionf(length,width)
{
alert("高为:"+length+",宽为:"+width);
}
</srcipt>
上面那段代码其实是行不通的,因为函数定义时的参数个数和函数调用时的参数个数没有任何关系。在函数中可以用f.arguments[0]和f.arguments[1]得到调用时传入的第一和第二个参数,所以定义function(length),后面用f(10,10)调用是没有问题的。所以在上面这段代码中,第二个函数是永远不可能被调用到的,那么,要怎样才能实现像函数重载那样的功能呢?
那就是在函数定义中用f.arguments.length判断一下调用时传入的参数个数。然后对不同的情况采用不同的处理方式。
如下:
复制代码 代码如下:
<scriptlanguage="JavaScript">
functionf()
{
varlen=arguments.length;
if(1==len)
{
varlength=arguments[0];
varwidth=arguments[1];
f2(length,width);
}
else
{
varlength=arguments[0];
f1(length);
}
}
functionf1(length)
{
alert("高为:"+length);
}
functionf2(length,width)
{
alert("高为:"+length+",宽为:"+width);
}
</srcipt>
这样,你就可以给函数f()传入一个参数也可以传入两个参数了,比如f(10)和f(10,10);
个人觉得,这样虽然可以实现重载,但也不是很好用,我们可以根据具体情况在一个函数中实现重载,如果要重载的两个函数相差较大,那就保留两个函数,而如果两个函数的实现基本差不多,那么可以在一个函数中进行判断,处理不同的部分,而不需要像上面那样写成三个函数,如下:
复制代码 代码如下:
<scriptlanguage="JavaScript">
functionf(length)
{
varlen=arguments.length;
if(1==len)
{
varwidth=arguments[1];
alert("高为:"+length+",宽为:"+width);
}
else
{
alert("高为:"+length);
}
}
</srcipt>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
js中如何实现方法重载?这涉及到三个问题1.同名函数的调用问题2.函数中特殊的参数arguments3.如何利用arguments实现方法重载1、同名函数的调用
函数重载:在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,即函数重载。重载的实现:几个同名的重载函数仍然是不同的函数,它们是如何区分的呢?我们自
在JavaScript中,函数function就是对象。JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念。 例子:复制代码代码如下
1.函数就是对象,而函数名是指向函数对象的指针,不会与某个函数绑定。2.函数没有重载(函数重载:同一个函数名对应着多个函数的实现.)ForExamle: fu
首先回忆下以前学的函数重载函数重载函数重载的本质为相互独立的不同函数通过函数名和函数参数来确定函数调用无法直接通过函数名得到重载函数的入口地址函数重载必然发生在