1. 程式人生 > >JavaScript中通過arguments對象實現對象的重載

JavaScript中通過arguments對象實現對象的重載

doctype javascrip 運行 views 根據 article pos rip 推斷

<!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中通過arguments對象實現對象的重載