【原创】用JavaScript函数中的arguments对象模拟重载效果

用JavaScript函数中的arguments对象模拟重载效果

说起重载,什么是重载?

官方概念:多个函数,拥有相同的函数名,但不同的参数列表

               调用时,可根据传入的参数值列表,自动调用匹配的函数

个人理解什么是重载:

       就好比去超市结账,用户只需告诉收银员“结账”这两个字,收银员会给你几个选择,现金,刷卡,或者支付宝。这里每个选择都是“结账”这个方法(或者说是函数)的不同参数,用户选择不同的参数后,收银员对应执行参数对应的        函数体。

按照理论大致程序表示:

收银员:(有三个函数名为结账的函数)

  function 结账(现金)   function 结账(刷卡)           function 结账(支付宝)

{                                   {                                        {

   现金付款流程                    刷卡流程                               支付宝流程

}                                   {                                         {

顾客:调用

Function 结账(一百元现金)

{

   现金付款流程

}

***************以上是理论阐述重载,但是在js中没有重载的概念!************************

那么在js中如何实现重载呢?

虽然js中不支持重载的概念,但是在函数内部有一个arguments对象可以通过获取参数列表,判断参数个数的方法来模拟重载效果

什么是arguments对象

      所有function内部,自动创建的一个对象

      专门顺序接收所有传入函数的参数

      可当做数组使用,也就是类数组对象

什么是类数组对象:长得像数组的对象---像数组但不是数组,可以用数组的length,和下标查找,但是push之类的数组方法不可使用

  ********** 接下来看两个案例**********

案例1

 

案例2:

    

值得注意的是:无论函数有没有定义参数变量,arguments都能获得所有参数值

                     若你之前定义函数的时候传入了三个值,但是也比不过arguments在底层的改变。

比如:我将上面案例改变一下,运行结果不变。定什么参数arguments不受影响

        

 

何时使用重载:今后只要实现一个业务,

                      可能根据参数的不同,执行不同的流程时,就要用重载!不需要为每种流程分别起名。

 

转载于:https://www.cnblogs.com/webfullstack/p/4898000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值