国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Javascript 面向?qū)ο?重載

2024-05-06 14:10:01
字體:
供稿:網(wǎng)友
假如 我這樣定義:

代碼如下:
function getDate(){.....}
function getDate(date){.....}

那么后一個(gè)方法將覆蓋前一個(gè),雖然不報(bào)錯(cuò)。

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


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

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

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

}

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

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

這樣就實(shí)現(xiàn)了JavaScript的重載,不過我們發(fā)現(xiàn)這樣的“實(shí)現(xiàn)”實(shí)在是太勉強(qiáng)了,如果參數(shù)多了,就會(huì)顯得力不從心,代碼也會(huì)很亂,到處是if{...} 。所以我不建議在JavaScript中使用這樣的重載。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 堆龙德庆县| 苍南县| 呼伦贝尔市| 瓦房店市| 韶关市| 惠来县| 颍上县| 庆城县| 富阳市| 太仆寺旗| 神农架林区| 吉安市| 晴隆县| 新河县| 濮阳市| 吴川市| 秀山| 太保市| 武胜县| 安仁县| 会同县| 临沂市| 乌拉特后旗| 涡阳县| 渝中区| 彭泽县| 克山县| 嵊泗县| 连城县| 乌鲁木齐县| 贺兰县| 全南县| 绥德县| 满洲里市| 武穴市| 林甸县| 建水县| 甘泉县| 隆林| 平潭县| 绥滨县|