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