js可以通过arguments.length模拟参数个数不同的重载,可是如何实现参数类型不同的重载呢?

zsdlOO 2010-10-28 09:35:15
js可以通过arguments.length模拟参数个数不同的重载,可是如何实现参数类型不同的重载呢?
-------------------------------------------
同名的函数,如果传入的参数个数不同,执行不同的操作,这种重载通过 arguments.length属性可以实现,
但是对于类型不同的重载,如何来模拟呢?
比如同名的两个函数,一个参数是数字型,另一个函数的参数是字符串型,(只是举例子)
这种情况下,如何模拟重载呢?
...全文
268 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjhiphop2006 2010-10-29
  • 打赏
  • 举报
回复
传入参数,然后switch判断数据类型,分别处理
happy664618843 2010-10-29
  • 打赏
  • 举报
回复
恩 arguments可以传入多个参数的集合!!!!!!!!!!!!!!!!!!!
Crazywa 2010-10-29
  • 打赏
  • 举报
回复

<script>
alert(typeof []); //typeof 数组是 object
alert([] instanceof Array); // 数组instanceof Array 是true 判断更精确一些
</script>
Crazywa 2010-10-29
  • 打赏
  • 举报
回复
instanceof 和 typeof 可以判断数据类型。
但是多数时候我用JSON来做参数,然后在函数内部判断类型。
之前在蓝色理想上看见一个人写了个重载类,我说用JSON就可以了,这样做没什么大意义。。
结果让一个高手骂了个狗血喷头。。
可能是境界不到吧,个人感觉,在js里面,没有必要去刻意做一些重载的东西。
hch126163 2010-10-29
  • 打赏
  • 举报
回复
楼上2位正解!
js 函数,是只认函数名称的,不管参数列表的!调用时,是按顺序一一对应!
如果一个函数 function fun(a,b){}
调用时:
fun(1,2) => a=1;b=2
fun(1) => a=1;b=undefined
fun(1,2,3) => a=1;b=2 , 3 无用

要实现方法重载,只有根据参数类型和数量来判断,分别做不同的处理
IcyFox 2010-10-28
  • 打赏
  • 举报
回复
javascript是一种弱类型语言。它用var可以声明所有类型的变量。。因此,函数的参数类型是否相同也就没有关系了。。

function fun()
{
if(arguments.length=1)
{
alert(arguments[1]);
}
else if(arguments.length=2)
{
alert(arguments[0]+arguments[1])
}
else
{
alert("有多个参数")
}

}
fun("hello")//输出hello
fun(1,2)//输出3
fun(1,2,"hello")//输出有多个参数
firebugdotname 2010-10-28
  • 打赏
  • 举报
回复


function hey(name){
if(typeof name === "string") alert("string "); //handler string
if(typeof name === "number") alert("number "); //handler number
}

hey(123);
hey("abc");

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧