JavaScript中如何通过arguments对象实现对象的重载


Posted in Javascript onMay 12, 2014
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Insert title here</title> 
<script type="text/javascript"> 
/* 
*1.js 中不存在函数的重载 
2.js函数定义时候的形参个数,和执行时候时,传递的实参的个数可以不一样。 
3.js执行时候,会将真实的参数,封装成组arguments */ 
function add(a){ 
return a+10; 
} 
var add=new Function("a","return a+10"); 
//alert(add(5)); 
function add(num1,num2){ 
return num1+num2; 
} 
var add=new Function("num1","num2","return num1+num2"); 
alert(add(5,6)); 
alert(add(5));//这样调用的结果是NaN:因为调用的时后定义的两个参数的函数 
//也就是虽然有var的声明,但是javascript中只要变量名称相同,后定义的就会覆盖 
//之前定义的=======得出的结论就是js中不存在函数的重载。 
//-------------------用arguments对象模拟方法的重载----- 
//-依据不同的参数个数,调用不同的代码块,最多25个参数 
function addNum(){ 
alert(arguments.length); 
for(var x=0;x<arguments.length;x++){ 
alert(arguments[x]); 
//这个对象只能爱函数体内 
} 
if(arguments.length==1){ 
return arguments[0]+10; 
}else if(arguments.length==2){ 
return arguments[0]+arguments[1]; 
}else{ 
return "参数错误,请核对"; 
} 
} 
var value=addNum(10,20,30); 
alert("函数的返回值:"+value);//结果value的值就是:"参数错误,请核对" 
//事实上,是通过参数的判断,去实现调用不同的函数功能,并且返回不同的值;这样做类似的实现了java中的重载 
//但是本质上,js中是没有重载的,相同的变量,在不同的位置出现,若赋值后,必然会覆盖前面声明的变量。当然 
//这里面排除掉函数内部的量和函数外部变量的这一种关系。 
</script> 
</head> 
<body> 
</body> 
</html>
Javascript 相关文章推荐
JQuery扩展插件Validate 3通过参数设置错误信息
Sep 05 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
js遍历td tr等html元素
Dec 13 Javascript
javascript查询字符串参数的方法
Jan 28 Javascript
jQuery图片轮播实现并封装(一)
Dec 03 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 Javascript
node.js开发辅助工具nodemon安装与配置详解
Feb 06 Javascript
vue-router为激活的路由设置样式操作
Jul 18 Javascript
Vue实现开关按钮拖拽效果
Sep 22 Javascript
小程序实现上下切换位置
Nov 16 Javascript
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
JavaSript中变量的作用域闭包的深入理解
May 12 #Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
May 12 #Javascript
JavaScript中对象属性的添加和删除示例
May 12 #Javascript
构造函数+原型模式构造js自定义对象(最通用)
May 12 #Javascript
Javascript中对象继承的实现小例
May 12 #Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
May 12 #Javascript
js图片处理示例代码
May 12 #Javascript
You might like
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
百度地图API使用方法详解
2015/08/25 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
初学Python函数的笔记整理
2015/04/07 Python
进一步了解Python中的XML 工具
2015/04/13 Python
python执行get提交的方法
2015/04/29 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
学校介绍信范文
2014/01/14 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
新人入职感言
2015/07/31 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL