一、什么是重载
相同函数名,不同形参列表的多个函数,在调用时,可根据出入的实参值列表不同,自动选择对应的函数版本执行不同的操作。
二、为什么要使用重载
为了减少函数的个数,减轻调用者的负担。
三、何时使用
如果一件事,可能根据传入的实参值不同,执行不同的操作时,就可以用重载方式来实现。
四、存在问题
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]不同,来决定执行哪种不同的业务逻辑