標籤:nts rip 介紹 for array 列表 api 支援 log
一些概念:
重載(overload):
什麼是: 相同函數名,不同參數列表的多個函數,在調用時,可根據傳入參數的不同,自動選擇對應的函數調用!
為什麼: 減輕調用者的負擔,一個函數名,可執行多種操作
何時: 一項任務,根據不同的參數,執行不同的操作流程時
如何: js文法不支援重載效果
變通: 所有函數對象內,都自動內建了一個
其功能實現情況如下:
function pay(){ console.log("支付") ;}function pay(num){ console.log("現金支付") ;}function pay(card,pwd){ console.log("刷卡支付") ;}// 以下是理想中的重載實現效果 pay() //“支付”pay(500) //"現金支付"pay("xxxxxxxxxxxxx","546464") //刷卡支付// 而由於 javaScript 中的 聲明提前 特性 將導致實際輸出以下結果pay() //刷卡支付pay(500) //刷卡支付pay("xxxxxxxxxxxxx","546464") //刷卡支付
因此 我們需要 arguments 對象在javaScript中來類比重載效果
概念二:
所有函數對象內,都自動內建了一個arguments對象
arguments對象:
專門儲存傳入函數的所有參數值的類數組對象
類數組對象: (object like array)
vs 數組: 相同: 下標, length, for遍曆
不同: 類數組對象是Object,不是Array,無法使用Array的API
數組是Array類型,可以使用數群組類型所有的API
由此引申出的解決方案如下:
function pay(){ if(arguments[0]==null){ console.log("支付"); }else if(typeof (arguments[0])=="number"){ console.log("現金支付,收您"+arguments[0]+"元"); }else{ console.log("刷卡支付,您的卡號"+arguments[0]+"扣款成功"); } } pay(); //支付 pay(500); //現金支付,收您500元 pay("14564645646"); //刷卡支付,您的卡號14564645646扣款成功
當然 arguments 對象的使用方法遠遠不止這一種,這裡只是簡單的介紹。
利用argument對象在javaScript中實現重載(overload)