重载overload

一、什么是重载

相同函数名,不同形参列表的多个函数,在调用时,可根据出入的实参值列表不同,自动选择对应的函数版本执行不同的操作。


二、为什么要使用重载

为了减少函数的个数,减轻调用者的负担。


三、何时使用

如果一件事,可能根据传入的实参值不同,执行不同的操作时,就可以用重载方式来实现。


四、存在问题

js语言不支持类似java中的重载效果,因为js语言不允许多个同名函数同时存在,如果强行定义多个同名函数同时存在,最终结果只有最后一个函数能幸存下来


五、解决

借助于arguments对象来变通实现重载效果。

(1).什么是arguments:

    a.每个函数中自带的——不用创建就可直接使用

    b.自动接收所有传入函数的实参值——用途

    c.的类数组对象——存储结构和数据类型、

        1).什么是类数组对象: 长得像数组的对象

        2). vs数组:

            i.相同: 1.下标, 2. length属性, 3. 可以用for循环遍历

            ii.不同:类型不同!类数组对象无法使用数组家的函数!

(2).何时:将来只要调用时,实参值的个数不确定有几个!即可用arguments来接住所有实参值

(3).如何: 3步:

    a.只定义一个函数,且不要定义任何形参变量!

    b.在函数内,arguments对象会自动获得将来传入的所有实参值列表

    c.在函数内,可通过判断传入的实参值个数(arguments.length)或实参值内容arguments[i]不同,来决定执行哪种不同的业务逻辑

推荐阅读更多精彩内容

  • js变量复制,复杂类型存的是地址值,浅拷贝只是把地址值复制了一份,拷贝对象和原对象指向同一个地址, 一个改变也会影...
    A_dfa4阅读 903评论 6 9
  • 闭包不好理解,所以先从示例说起。 假设我们需要计算平均值,这些值会从外层传递进来,然后被保存在内部。 (1) 非闭...
    deniro阅读 77评论 0 3
  • (小白学习之接口篇,请多指教) ts接口主要用来定义一个对象的类型,通过interface关键字来定义 举个🌰: ...
    嘿熊小样阅读 341评论 0 5
  • JS中的函数 一、定义绝对值函数 第一种方式: 第二种方式: 函数相当于是匿名的,可以把结果赋值给abs,通过ab...
    雪国_3472阅读 83评论 0 1
  • 一. 继承的几种方式 1.继承 对象拷贝:for……in :父对象的属性拷贝给子对象。 2.原型继承 3.构造函数...
    Aaron胖虎阅读 94评论 0 3