最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript 面向?qū)ο?重載

 更新時間:2010年05月13日 16:46:00   作者:  
在面向?qū)ο笳Z言里重載是很重要的一個特性,而JavaScript這個自稱面向?qū)ο蟮恼Z言竟然沒有直接提供重載的功能。
假如 我這樣定義:

復(fù)制代碼 代碼如下:

function getDate(){.....}
function getDate(date){.....}

那么后一個方法將覆蓋前一個,雖然不報錯。

但是我們確實是可以實現(xiàn)重載的,如果你用過jQuery,你就會深有體會,比如$("#btn").val() 是獲取id為"btn"的按鈕的value值,而$("#btn").val("點我")則是給id為"btn"的按鈕賦值。


那么JavaScript是怎么實現(xiàn)(準(zhǔn)確地講應(yīng)該叫“模擬”)的呢?。
答案很簡單:arguments
arguments是JavaScript里的一個內(nèi)置對象,包含了調(diào)用者傳遞的實際參數(shù),但不局限于函數(shù)聲明所定義的參數(shù)列表,而調(diào)用時只它和數(shù)組一樣有個length屬性?!?
   我們暫且把它當(dāng)“數(shù)組”來理解吧,我們根據(jù)該數(shù)組的長度以及其元素的類型來選擇不同的實現(xiàn),從而模擬了重載。 
   具體請看下面的示例:

復(fù)制代碼 代碼如下:

function getDate(){
if(arguments.length==0){
var date=new Date().toLocaleDateString();
return "您沒有輸入?yún)?shù),現(xiàn)在時間:"+date ;
}

if(arguments.length==1){
if(arguments[0].constructor ==Date){
return "您輸入的參數(shù)是Date類型,現(xiàn)在時間是:"+arguments[0].toDateString();
}
if(arguments[0].constructor ==String){
return "您輸入的參數(shù)是String類型,現(xiàn)在時間是:"+arguments[0];
}
}

}

于是我們可以這樣調(diào)用:

getDate()
getDate(new Date())
getDate("星期一")

這樣就實現(xiàn)了JavaScript的重載,不過我們發(fā)現(xiàn)這樣的“實現(xiàn)”實在是太勉強(qiáng)了,如果參數(shù)多了,就會顯得力不從心,代碼也會很亂,到處是if{...} 。所以我不建議在JavaScript中使用這樣的重載。

相關(guān)文章

  • javascript面向?qū)ο蟮姆绞綄崿F(xiàn)的彈出層效果代碼

    javascript面向?qū)ο蟮姆绞綄崿F(xiàn)的彈出層效果代碼

    由于本人以前是.net程序員,所以即使現(xiàn)在在做前端,也習(xí)慣于用面向?qū)ο蟮姆绞骄帉慾s腳本,我想如果你以前也是或者現(xiàn)在還是名第三代程序員的話,應(yīng)該對此并不陌生。
    2010-01-01
  • 最新評論

    龙州县| 唐海县| 夏津县| 湖北省| 威宁| 华蓥市| 永平县| 阿瓦提县| 天台县| 蕲春县| 合江县| 遂川县| 丰县| 舒兰市| 凤阳县| 江西省| 庆元县| 崇仁县| 荆州市| 九龙坡区| 桂平市| 浦北县| 商都县| 前郭尔| 楚雄市| 灵川县| 新丰县| 潜山县| 隆尧县| 克拉玛依市| 青浦区| 香港| 佛山市| 岐山县| 当阳市| 米脂县| 晴隆县| 陵水| 新宁县| 巴彦淖尔市| 盱眙县|