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

來源:互聯網
上載者:User

複製代碼 代碼如下:
<!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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.