一些概念:

重载(overload):
什么是: 相同函数名,不同参数列表的多个函数,在调用时,可根据传入参数的不同,自动选择对应的函数调用!
为什么: 减轻调用者的负担,一个函数名,可执行多种操作
何时: 一项任务,根据不同的参数,执行不同的操作流程时
如何: js语法不支持重载效果
变通: 所有函数对象内,都自动内建了一个

其功能实现情况如下:

function pay(){
console.log("微信支付") ;
}
function pay(num){
console.log("现金支付") ;
}
function pay(card,pwd){
console.log("刷卡支付") ;
} // 以下是理想中的重载实现效果
pay() //“微信支付”
pay(500) //"现金支付"
pay("xxxxxxxxxxxxx","546464") //刷卡支付 // 而由于 javaScript 中的 声明提前 特性 将导致实际输出以下结果
pay() //刷卡支付
pay(500) //刷卡支付
pay("xxxxxxxxxxxxx","546464") //刷卡支付

  

因此 我们需要 arguments 对象在javaScript中来模拟重载效果

概念二:

所有函数对象内,都自动内建了一个arguments对象
arguments对象:
专门保存传入函数的所有参数值的类数组对象
类数组对象: (object like array)
vs 数组: 相同: 下标, length, for遍历
不同: 类数组对象是Object,不是Array,无法使用Array的API
数组是Array类型,可以使用数组类型所有的API

由此引申出的解决方案如下:

function pay(){
if(arguments[0]==null){
console.log("微信支付");
}else if(typeof (arguments[0])=="number"){
console.log("现金支付,收您"+arguments[0]+"元");
}else{
console.log("刷卡支付,您的卡号"+arguments[0]+"扣款成功");
}
}
pay(); //微信支付
pay(500); //现金支付,收您500元
pay("14564645646"); //刷卡支付,您的卡号14564645646扣款成功

  当然 arguments 对象的使用方法远远不止这一种,这里只是简单的介绍。

利用arguments对象在javaScript中实现重载(overload)的更多相关文章

  1. 利用navigator对象在浏览器中检查插件

    利用navigator对象在浏览器中检查插件,实现的代码如下. // IE4+.firefox.chrome.safari.opera中,利用navigator检测插件 ,name为插件的名字 fun ...

  2. JavaScript中的重载解读

    在JavaScript中有一种特殊的数据类型---Function类型,JavaScript的每个函数都是Function类型的实例.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与 ...

  3. c++中的重载(Overload)、覆盖(重写,Override) 、隐藏与using声明

    这些概念有时记住了,但可能没多久就忘了,还是记下来吧.网上找的一篇不错:这里  1 重载与覆盖 成员函数被重载的特征: (1)相同的范围(在同一个类中,不包括继承来的): (2)函数名字相同: (3) ...

  4. JavaScript学习系列3 -- JavaScript arguments对象学习

    在实际项目开发中,目前还是很少使用到JavaScript 中的arguments对象,那么它到底是干什么用的呢 arguments是JavaScript中的一个类数组对象,它代表传给一个正在执行的函数 ...

  5. JavaScript中的事件对象

    JavaScript中的事件对象 JavaScript中的事件对象是非常重要的,恐怕是我们在项目中使用的最多的了.在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含这所有与事件有 ...

  6. javascript中的字符串对象和数组对象

    1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...

  7. javascript中的字符串对象

    1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...

  8. 详解javascript中的this对象

    详解javascript中的this对象 前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的 ...

  9. 了解Javascript中函数作为对象的魅力

    前言 Javascript赋予了函数非常多的特性,其中最重要的特性之一就是将函数作为第一型的对象.那就意味着在javascript中函数可以有属性,可以有方法, 可以享有所有对象所拥有的特性.并且最重 ...

随机推荐

  1. CSU1808 地铁 —— dijkstra变形

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808 题解:由于中转线路需要花费一定的时间,所以一般的以顶点为研究对象的dijkst ...

  2. RobotFramework教程使用笔记——初识RobotFramework

    1.创建项目 File->New Project 创建测试项目 Type选择Directory 右键项目创建测试套件,也可以理解为创建不同测试逻辑或者是测试业务 右键测试套件创建case 注:如 ...

  3. 用 Java 抓取优酷、土豆等视频

    1. [代码][JavaScript]代码  import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes ...

  4. 常规问题解决:File "/usr/bin/yum", line 30 及 File "/usr/libexec/urlgrabber-ext-down", line 28

    在执行yum命令时忽然发现出现以下报错: # yum list File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ...

  5. 使用cygwin注意事项二

    使用cygwin时,一定要区分当前运行的是cygwin下的进程还是windows下的进程,如:使用vim, 假如cygwin下没安装vim, windows下安装了,那么你运行的就是windows下的 ...

  6. POJ2154 Color【 polya定理+欧拉函数优化】(三个例题)

    由于这是第一天去实现polya题,所以由易到难,先来个铺垫题(假设读者是看过课件的,不然可能会对有些“显然”的地方会看不懂): 一:POJ1286 Necklace of Beads :有三种颜色,问 ...

  7. java-swingButton

    package com.http; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.http. ...

  8. bzoj 4711 小奇挖矿 ——“承诺”类树形dp

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4711 对“承诺”有了更深的了解. 向外和向内要区分,所以 f [ i ][ j ] 表示根向 ...

  9. keil5中文乱码的解决

    keil5 复制出来的中文显示乱码,该如何解决? 点击Edit - Configuration ,进入编辑器设置: 点击ok ,就可以了

  10. 了解Hadoop

    Apache Hadoop 官网 Hadoop源码分析 参考1   参考2 Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构. Hadoop 的框架最核心的设计就是:HDFS(H ...