如何在js中实现方法重载这涉及到三个问题。

1的召唤。同音词的功能

2中的特殊参数参数。功能

三.如何使用参数来实现重载方法

1、对同名函数的调用问题

在js中知道如果有多个相同的名称函数,每次调用只使用最后一个,js不重,也就是说,如果定义了同名函数,单个参数就不一样了,当调用JS时,不管参数的多少,就在顺序之前。

例如:


功能测试(arg1)
{
警报(参数1+ arg1);
}
功能(arg1,arg2 test1,ARG3)
{
警报(参数1+参数arg1 + 2:+ 2 +参数3+ ARG3);

}
测试代码
函数测试(){
test1(1 )
}


虽然我们叫test1(1),我们通过一个参数,但其实我们叫(arg1,arg2 test1,ARG3),而不是只有一个参数调用参数。

2。函数中的特殊参数参数

如果我们使用下面的代码




功能(arg1,arg2 test1,ARG3)
{
警报(参数1+参数arg1 + 2:+ 2 +参数3+ ARG3);

}
功能测试(arg1)
{
警报(参数1+ arg1);
}
测试代码
函数测试(){
test1(1
}


我们知道,电话总是test1(arg1),即只有一个参数的函数,但你怎么通过其他参数

这将使用函数中的特殊参数参数,参数包含传递给函数的所有参数。


功能测试()
{
var text;
对于(var i = 0;i < arguments.length;i++){
文本+参数+:+参数{ };
}
警报(文本);
}
测试代码
函数测试(){
test1(1 );
test1(1
test1(1
}


经过测试,发现参数包含所有的参数传递给函数,并arguments.length不同根据实际传递的参数个数。arguments.length代表实际传输函数的参数个数。

三.如何在JS中重载该函数

通过以上测试,发现该函数不能直接在JS中重载,但是有没有一种方法可以达到类似的重载效果呢

是的,主要是利用论点。

例如:


功能测试()
{
var text;
如果(参数=长度= 1)
{
调用方法参数
}
否则如果(参数=长度= 2)
{
方法调用两个参数
}
方法
}
}