javascript函数能重载吗?

比如定义了三个名字一样的函数,一个没有参数,一个有一个参数,一个有两个参数,然后调用时根据给予的参数个数它自己能认得调用那个吗?... 比如定义了三个名字一样的函数,一个没有参数,一个有一个参数,一个有两个参数,然后调用时根据给予的参数个数它自己能认得调用那个吗? 展开
 我来答
枪锋战士
推荐于2018-01-01 · TA获得超过1339个赞
知道小有建树答主
回答量:568
采纳率:0%
帮助的人:641万
展开全部
javascript函数的重载和java的重载方式不一样。
定义JavaScript函数时,函数名是函数对象的标识,参数数量只是这个函数的属性。靠定义参数数量不同的函数实现重载是不行的。
调用函数时,js通过函数名找到对应的函数对象,然后根据函数按照定义时的参数,和表达式参数列表按顺序匹配,多余的参数舍去,不够的参数按undefined处理,然后执行函数代码。所以,js重载函数需要通过函数代码判断参数值和类型实现。
通常定义函数时,把必选参数放在参数列表最前面,可选参数放在参数放在参数列表必须参数后面,方便函数重载。
baidan1989
2016-01-29 · TA获得超过156个赞
知道答主
回答量:221
采纳率:0%
帮助的人:42.1万
展开全部
<script type="text/javascript">
        //js是不支持重载的,通过但是arguments以及prototype可以实现重载和继承的效果:
        //1,通过arguments对象,去判断函数的参数个数:
        function doAdd(){
            if(arguments.length==1){
               alert(arguments[0]+10);
            }else if(arguments.length==2){
               alert(arguments[0]+ arguments[1]);
            }
        }
        doAdd(10); //outputs 20
        doAdd(20,30); //outputs 50
  
    /*备注:开发人员定义的函数都可以接受任意个数的参数(根据NetScript 文档,最多能接受25个) ,而不会引发错误,任何遗漏的参数都会用undefined 代替,多余的参数被将忽略。*/
  
    //2,通过prototype对象实现继承,添加新的属性和方法
     function persona(){
        this.a = 'A';
        this.sayA = function(){
            alert('My name is a')
        }
  
     }
      
      function personb(){
            this.b = 'B';
            this.sayB = function(){
                alert('My name is b')
            }
         }
    var a = new persona();
    personb.prototype = a;
        
        var b = new personb(); //此时b函数拥有了a的属性和方法
        
    alert(b.a);//outputs :A
    b.sayA(); //outputs :my name is a
    
    alert(b.b);//outputs :B
        b.sayB(); //outputs :my name is a
    </script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terrymoone
2015-09-19 · TA获得超过5433个赞
知道大有可为答主
回答量:4520
采纳率:41%
帮助的人:1671万
展开全部
不能函数重载。
原因是js中唯一识别函数的就是函数的函数名。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wang768752
2010-11-21 · TA获得超过110个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:93万
展开全部
你说的那种是可以的 这种函数一般叫做构造函数
就是方法名相同 参数类型或参数个数不同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣人降临
2010-11-21 · 超过33用户采纳过TA的回答
知道答主
回答量:229
采纳率:0%
帮助的人:105万
展开全部
可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式