【原创】用JavaScript函数中的arguments对象模拟重载效果
2015-10-21 15:39
585 查看
[b]用JavaScript函数中的arguments对象模拟重载效果[/b]
说起重载,什么是重载?
官方概念:多个函数,拥有相同的函数名,但不同的参数列表
调用时,可根据传入的参数值列表,自动调用匹配的函数
个人理解什么是重载:
就好比去超市结账,用户只需告诉收银员“结账”这两个字,收银员会给你几个选择,现金,刷卡,或者支付宝。这里每个选择都是“结账”这个方法(或者说是函数)的不同参数,用户选择不同的参数后,收银员对应执行参数对应的 函数体。
按照理论大致程序表示:
收银员:(有三个函数名为结账的函数)
function 结账(现金) function 结账(刷卡) function 结账(支付宝)
{ { {
现金付款流程 刷卡流程 支付宝流程
} { {
顾客:调用
Function 结账(一百元现金)
{
现金付款流程
}
***************以上是理论阐述重载,但是在js中没有重载的概念!************************
那么在js中如何实现重载呢?
虽然js中不支持重载的概念,但是在函数内部有一个arguments对象可以通过获取参数列表,判断参数个数的方法来模拟重载效果
什么是arguments对象
所有function内部,自动创建的一个对象
专门顺序接收所有传入函数的参数
可当做数组使用,也就是类数组对象
什么是类数组对象:长得像数组的对象---像数组但不是数组,可以用数组的length,和下标查找,但是push之类的数组方法不可使用
********** 接下来看两个案例**********
案例1
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/31/d77954efe4a696d0bfdc3d8ad39a34da.png)
案例2:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/31/11a8e26e35daa3c913cc53e004a68ebf.png)
值得注意的是:无论函数有没有定义参数变量,arguments都能获得所有参数值
若你之前定义函数的时候传入了三个值,但是也比不过arguments在底层的改变。
比如:我将上面案例改变一下,运行结果不变。定什么参数arguments不受影响
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/31/9c1744ff3d7a93efd80de97038c92887.png)
何时使用重载:今后只要实现一个业务,
可能根据参数的不同,执行不同的流程时,就要用重载!不需要为每种流程分别起名。
说起重载,什么是重载?
官方概念:多个函数,拥有相同的函数名,但不同的参数列表
调用时,可根据传入的参数值列表,自动调用匹配的函数
个人理解什么是重载:
就好比去超市结账,用户只需告诉收银员“结账”这两个字,收银员会给你几个选择,现金,刷卡,或者支付宝。这里每个选择都是“结账”这个方法(或者说是函数)的不同参数,用户选择不同的参数后,收银员对应执行参数对应的 函数体。
按照理论大致程序表示:
收银员:(有三个函数名为结账的函数)
function 结账(现金) function 结账(刷卡) function 结账(支付宝)
{ { {
现金付款流程 刷卡流程 支付宝流程
} { {
顾客:调用
Function 结账(一百元现金)
{
现金付款流程
}
***************以上是理论阐述重载,但是在js中没有重载的概念!************************
那么在js中如何实现重载呢?
虽然js中不支持重载的概念,但是在函数内部有一个arguments对象可以通过获取参数列表,判断参数个数的方法来模拟重载效果
什么是arguments对象
所有function内部,自动创建的一个对象
专门顺序接收所有传入函数的参数
可当做数组使用,也就是类数组对象
什么是类数组对象:长得像数组的对象---像数组但不是数组,可以用数组的length,和下标查找,但是push之类的数组方法不可使用
********** 接下来看两个案例**********
案例1
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/31/d77954efe4a696d0bfdc3d8ad39a34da.png)
案例2:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/31/11a8e26e35daa3c913cc53e004a68ebf.png)
值得注意的是:无论函数有没有定义参数变量,arguments都能获得所有参数值
若你之前定义函数的时候传入了三个值,但是也比不过arguments在底层的改变。
比如:我将上面案例改变一下,运行结果不变。定什么参数arguments不受影响
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/31/9c1744ff3d7a93efd80de97038c92887.png)
何时使用重载:今后只要实现一个业务,
可能根据参数的不同,执行不同的流程时,就要用重载!不需要为每种流程分别起名。
相关文章推荐
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
- JavaScript简单遍历DOM对象所有属性的实现方法
- js常用工具类(二次更新)
- 陈朱兴-js写法【案例】:
- json知识点总结(解析与序列化)
- js中使用jstl中得到的值
- JS设置cookie,删除cookie
- 洛谷:JSOI2008 最大数
- 详解JavaScript操作HTML DOM的基本方式
- javascript使用小技巧
- js上传图片预览
- JSON.parse()和JSON.stringify()
- GZip压缩的js文件IE6下面不能包含<script>标签
- .Net 2.0自带的Json序列化、反序列化方法
- Javascript的console.log()用法
- Javascript的this用法
- JavaScript函数的调用以及参数传递
- JavaScript判断内容不为空,且不能只是空格
- jsp页面显示指定文字,多余的用...代替,鼠标指着会显示全部内容
- JS刷新父窗口的几种方式