利用argument對象在javaScript中實現重載(overload)

來源:互聯網
上載者:User

標籤: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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.