Javascript基礎(chǔ) 函數(shù)“重載” 詳細(xì)介紹
Javascript不像其他編程語言一樣具有函數(shù)簽名(什么是函數(shù)簽名,簡單的說就是說函數(shù)的接受參數(shù)類型和參數(shù)個數(shù),也有人認(rèn)為返回類型也應(yīng)該包括。具體概念大家可以到網(wǎng)上查詢)。
所以Javascript是不能像其他語言一樣實現(xiàn)方法名相同,參數(shù)個數(shù)不同…的這類重載的,不信你可以試試:
function show(){
alert("1");
}
function show(num1){
alert(num1);
}
window.onload=function(){
show();
show(2);
}
斷點調(diào)試下,不帶參數(shù)的show方法是不會被執(zhí)行的,它會被show(num1)方法給覆蓋掉。
那么Javascript中就不可以實現(xiàn)“重載”了么?答案是可以的,只是是另一種方式而已。對,就是利用arguments。
那么什么是arguments呢?在JS中它是一個特殊的屬性,它可以像數(shù)組一樣通過下標(biāo)索引獲取參數(shù)的值(但它不是數(shù)組),通過length獲取參數(shù)個數(shù):
function showParamsCount(){
alert("參數(shù)個數(shù):"+arguments.length);//輸出:參數(shù)個數(shù):4
alert("下標(biāo)索引為3的參數(shù):"+arguments[3]);//輸出: 下標(biāo)索引為3的參數(shù):你好
}
window.onload=function(){
showParamsCount("Hello",4,5,"你好");
}
還要知道的一點是JS中函數(shù)的命名參數(shù)不是必須的,所以要想知道調(diào)用時傳遞了多少個參數(shù)還是得通過arguments獲取參數(shù)。
下面就實現(xiàn)一個簡單的方法重載:
這樣JS的重載算是實現(xiàn)了。
在看js高級程序設(shè)計這本書的時候發(fā)現(xiàn)arguments的值與對應(yīng)命名參數(shù)的值永遠(yuǎn)同步,以前沒注意過這個問題
好吧關(guān)于js“重載”的基礎(chǔ)知識就這么些
相關(guān)文章
javascript中hasOwnProperty() 方法使用指南
這篇文章主要詳細(xì)介紹了javascript中hasOwnProperty() 方法使用指南,非常的全面,推薦給有需要的小伙伴參考下。2015-03-03
javascript 學(xué)習(xí)筆記(四) 倒計時程序代碼
javascript 學(xué)習(xí)筆記(四) 倒計時程序代碼,需要的朋友可以參考下。2011-04-04
javascript下判斷一個對象是否具有指定名稱的屬性的的代碼
hasOwnProperty 方法 返回一個布爾值,指出一個對象是否具有指定名稱的屬性。2010-01-01

