Javascript基礎 函數(shù)“重載” 詳細介紹
Javascript不像其他編程語言一樣具有函數(shù)簽名(什么是函數(shù)簽名,簡單的說就是說函數(shù)的接受參數(shù)類型和參數(shù)個數(shù),也有人認為返回類型也應該包括。具體概念大家可以到網(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ù)組一樣通過下標索引獲取參數(shù)的值(但它不是數(shù)組),通過length獲取參數(shù)個數(shù):
function showParamsCount(){
alert("參數(shù)個數(shù):"+arguments.length);//輸出:參數(shù)個數(shù):4
alert("下標索引為3的參數(shù):"+arguments[3]);//輸出: 下標索引為3的參數(shù):你好
}
window.onload=function(){
showParamsCount("Hello",4,5,"你好");
}
還要知道的一點是JS中函數(shù)的命名參數(shù)不是必須的,所以要想知道調(diào)用時傳遞了多少個參數(shù)還是得通過arguments獲取參數(shù)。
下面就實現(xiàn)一個簡單的方法重載:
這樣JS的重載算是實現(xiàn)了。
在看js高級程序設計這本書的時候發(fā)現(xiàn)arguments的值與對應命名參數(shù)的值永遠同步,以前沒注意過這個問題
好吧關于js“重載”的基礎知識就這么些
相關文章
javascrpt綁定事件之匿名函數(shù)無法解除綁定問題
經(jīng)常聽到有人說,匿名函數(shù)綁定事件不好控制啊,無法解除綁定啊,本文將介紹詳細的解決方法,需要的朋友可以參考下2012-12-12
javascript nextSibling 與 getNextElement(node) 使用介紹
javascript nextSibling 與 getNextElement(node) 使用介紹,學習js的朋友可以參考下。2011-10-10

