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

<!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>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hymKing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值