Javascript基礎(chǔ) 函數(shù)“重載” 詳細(xì)介紹
Javascript不像其他編程語(yǔ)言一樣具有函數(shù)簽名(什么是函數(shù)簽名,簡(jiǎn)單的說(shuō)就是說(shuō)函數(shù)的接受參數(shù)類(lèi)型和參數(shù)個(gè)數(shù),也有人認(rèn)為返回類(lèi)型也應(yīng)該包括。具體概念大家可以到網(wǎng)上查詢)。
所以Javascript是不能像其他語(yǔ)言一樣實(shí)現(xiàn)方法名相同,參數(shù)個(gè)數(shù)不同…的這類(lèi)重載的,不信你可以試試:
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)“重載”了么?答案是可以的,只是是另一種方式而已。對(duì),就是利用arguments。
那么什么是arguments呢?在JS中它是一個(gè)特殊的屬性,它可以像數(shù)組一樣通過(guò)下標(biāo)索引獲取參數(shù)的值(但它不是數(shù)組),通過(guò)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ù)還是得通過(guò)arguments獲取參數(shù)。
下面就實(shí)現(xiàn)一個(gè)簡(jiǎn)單的方法重載:
這樣JS的重載算是實(shí)現(xiàn)了。
在看js高級(jí)程序設(shè)計(jì)這本書(shū)的時(shí)候發(fā)現(xiàn)arguments的值與對(duì)應(yīng)命名參數(shù)的值永遠(yuǎn)同步,以前沒(méi)注意過(guò)這個(gè)問(wèn)題
好吧關(guān)于js“重載”的基礎(chǔ)知識(shí)就這么些
相關(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è)對(duì)象是否具有指定名稱的屬性的的代碼
hasOwnProperty 方法 返回一個(gè)布爾值,指出一個(gè)對(duì)象是否具有指定名稱的屬性。2010-01-01JS嚴(yán)格模式知識(shí)點(diǎn)總結(jié)
本篇文章給大家整理了JS嚴(yán)格模式下的相關(guān)知識(shí)點(diǎn)以及代碼實(shí)例分享,感興趣的跟著小編一起學(xué)習(xí)下吧。2018-02-02