利用argument对象在javaScript中实现重载(overload)

一些概念:

重载(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 对象的使用方法远远不止这一种,这里只是简单的介绍。

时间: 2024-10-12 15:46:39

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

JavaScript中的重载解读

在JavaScript中有一种特殊的数据类型---Function类型,JavaScript的每个函数都是Function类型的实例.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. 1 <pre name="code" class="html">function sum(num1,num2) 2 { 3 return num1 +num2; 4 } 5 6 alert(sum(10,10)); //20 7 var ot

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

利用navigator对象在浏览器中检查插件,实现的代码如下. 1 // IE4+.firefox.chrome.safari.opera中,利用navigator检测插件 ,name为插件的名字 2 function hasPlugin(name) { 3 name = name.toLowerCase(); 4 for(var i = 0; i < navigator.plugins.length; i++) { 5 if (navigator.plugins[i].name.toLower

JavaScript中原型对象的彻底理解

一.什么是原型 原型是Javascript中的继承的继承,JavaScript的继承就是基于原型的继承. 1.1 函数的原型对象 ? 在JavaScript中,我们创建一个函数A(就是声明一个函数), 那么浏览器就会在内存中创建一个对象B,而且每个函数都默认会有一个属性 prototype 指向了这个对象( 即:prototype的属性的值是这个对象 ).这个对象B就是函数A的原型对象,简称函数的原型.这个原型对象B 默认会有一个属性 constructor 指向了这个函数A ( 意思就是说:c

JavaScript中的事件对象

JavaScript中的事件对象 JavaScript中的事件对象是非常重要的,恐怕是我们在项目中使用的最多的了.在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含这所有与事件有关的信息.下面将会讲到DOM中的事件对象.IE中的事件对象以及跨浏览器的事件对象三个部分. 对于事件处理程序,大家可以看我的博文<JavaScript中的五种事件处理程序>. 第一部分:DOM事件对象 兼容DOM的浏览器会将一个event对象传入到事件处理程序中,无论是HMTL特性.DOM0级还是

JavaScript中如何判断变量是数组、函数或是对象类型

数组 ECMAScript5中Array.isArray是原生的判断数组的方法,IE9及以上支持.考虑到兼容性,在没有此方法的浏览器中,可以使用 Object.prototype.toString.call(obj) === '[object Array]'替代. var isArray = Array.isArray || function(obj) {     return Object.prototype.toString.call(obj) === '[object Array]'; }

简单理解javascript中的原型对象,实现对之间共享属性和行为

javascript中提供了构造函数,能够方便的创建对象.典型的构造函数如下: function Person(name, age) { this.name = name; this.age = age; this.say = function () { return this.name + ',' + this.age;; } 之后就可以用new和构造函数创建多个对象.javascript中,类的不同对象之间,属性和方法都是独立的.什么意思呢?java中类的不同对象之间,成员变量是独立的(每个

详解javascript中的this对象

详解javascript中的this对象 前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的设计模式来实现面向对象的编程,其中this "指针"就是实现面向对象的一个很重要的特性.但是this也是Javascript中一个非常容易理解错,进而用错的特性.特别是对于接触静态语言比较久了的同志来说更是如此. 示例说明 我们先来看一个最简单的示例: <script type=&q

谈谈javascript中的日期Date对象

一.日期对象??在javascript中并没有日期型的数据类型,但是提供了一个日期对象可以操作日期和时间.??日期对象的创建:??new Date();二.将日期对象转换为字符串??将日期对象转换为字符串可以使用以下4种方法:??date.toString();//将日期对象转换为字符串时,采用的是本地时间??date.toLocalString();//将日期对象转换为字符串,采用的是本地时间,显示的是地方日期的格式??date.toUTCString();//将日期对象转换为字符串时,采用的

JavaScript中的对象及其方法

1.数组对象: javascript中数组是一种特殊的对象.创建一个新的数组类似于创建一个对象实例,通过new运算符和相应的数组构造函数完成.数组的构造函数是Array(),可以接受多个参数,编写方法如下: var myArray=new Array(); var myArray=new Array("北京","奥运会",100,true);//具有四个元素的数组 var myArray=new Array(5);//创建一个指定元素数量的数组,元素的值是Undef