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

首頁 > 編程 > JavaScript > 正文

Javascript 面向對象 重載

2019-11-21 00:30:38
字體:
來源:轉載
供稿:網友
假如 我這樣定義:

復制代碼 代碼如下:

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

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

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


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

復制代碼 代碼如下:

function getDate(){
if(arguments.length==0){
var date=new Date().toLocaleDateString();
return "您沒有輸入參數,現在時間:"+date ;
}

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

}

于是我們可以這樣調用:

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

這樣就實現了JavaScript的重載,不過我們發現這樣的“實現”實在是太勉強了,如果參數多了,就會顯得力不從心,代碼也會很亂,到處是if{...} 。所以我不建議在JavaScript中使用這樣的重載。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 朔州市| 顺平县| 房山区| 贵南县| 容城县| 盐山县| 泰和县| 故城县| 安西县| 司法| 青铜峡市| 麻栗坡县| 达州市| 新疆| 南木林县| 长海县| 方城县| 英吉沙县| 高唐县| 仪陇县| 蒙自县| 九龙坡区| 孟连| 宁都县| 潍坊市| 九龙坡区| 东安县| 平潭县| 陆丰市| 苍溪县| 分宜县| 西昌市| 尼木县| 黄冈市| 东乌珠穆沁旗| 和顺县| 中阳县| 虎林市| 米脂县| 陆河县| 浮梁县|