js可以通过arguments.length模拟参数个数不同的重载,可是如何实现参数类型不同的重载呢?
-------------------------------------------
同名的函数,如果传入的参数个数不同,执行不同的操作,这种重载通过 arguments.length属性可以实现,
但是对于类型不同的重载,如何来模拟呢?
比如同名的两个函数,一个参数是数字型,另一个函数的参数是字符串型,(只是举例子)
这种情况下,如何模拟重载呢?

解决方案 »

  1.   

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

  2.   

    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")//输出有多个参数
      

  3.   

    楼上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 无用要实现方法重载,只有根据参数类型和数量来判断,分别做不同的处理
      

  4.   

    instanceof 和 typeof 可以判断数据类型。
    但是多数时候我用JSON来做参数,然后在函数内部判断类型。
    之前在蓝色理想上看见一个人写了个重载类,我说用JSON就可以了,这样做没什么大意义。。
    结果让一个高手骂了个狗血喷头。。
    可能是境界不到吧,个人感觉,在js里面,没有必要去刻意做一些重载的东西。
      

  5.   


    <script>
    alert(typeof []); //typeof 数组是 object
    alert([] instanceof Array); // 数组instanceof Array 是true 判断更精确一些
    </script>
      

  6.   

    恩 arguments可以传入多个参数的集合!!!!!!!!!!!!!!!!!!!
      

  7.   

    传入参数,然后switch判断数据类型,分别处理