js如何實現(xiàn)函數(shù)重載?
西蘭花偉大炮
2017-04-22 23:43:09
TA貢獻5條經(jīng)驗 獲得超3個贊
js沒有其他語言比如java函數(shù)重載的概念,js的函數(shù)名相同只會覆蓋,后定義函數(shù)覆蓋先定的函數(shù),但是js可以模擬函數(shù)重載。
@星典 的例子,明顯的函數(shù)覆蓋,絕不是重載,永遠只會執(zhí)行最后定定義的f函數(shù).
function?f(length)? {? ????alert("高為:"+length);? }? ? function?f(length,width)? {? ????alert("高為:"+length+",寬為:"+width);? } f()??//高為:undefined,寬為:undefined f(99)?//?高為:99,寬為:undefined f(99,1000)?//?高為:99,寬為:1000
如上函數(shù)改為以下才是js模擬的重載
function?f(length,width)?{ ????var?len?=arguments.length; ????if(?len===0?){ ????????alert("請傳入?yún)?shù)"); ????} ????if(?len?===1){ ????????alert("高為:"+length); ????}? ????if(?len?===2){ ????????alert("高為:"+length+",寬為:"+width); ????}? } f()?//?請傳入?yún)?shù) f(99)?//?高為:99 f(99,1000)?//高為:99,寬為:1000
TA貢獻1064條經(jīng)驗 獲得超383個贊
function?f(length)? {? ????alert("高為:"+length);? }? function?f(length,width)? {? ????alert("高為:"+length+",寬為:"+width);? }
方法重載不都這樣嗎
舉報