JavaScript中通過arguments對象實現對象的重載
阿新 • • 發佈:2018-11-11
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對象實現對象的重載