欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js中方法重載如何實(shí)現(xiàn)?以及函數(shù)的參數(shù)問題

 更新時(shí)間:2013年08月01日 15:32:05   作者:  
js中沒有辦法直接實(shí)現(xiàn)方法重載,但每一個(gè)函數(shù)都有一個(gè)特殊的參數(shù)arguments,利用它可以實(shí)現(xiàn)方法的重載,具體示例如下
都知道在js中沒有辦法直接實(shí)現(xiàn)方法重載,因?yàn)樵趈s中如果定義了多個(gè)名稱相同,但參數(shù)個(gè)數(shù)不一樣的方法,其實(shí)只有最后一個(gè)方法能被真正調(diào)用,其他的方法都被覆蓋掉了。

但每一個(gè)函數(shù)都有一個(gè)特殊的參數(shù)arguments,利用它可以實(shí)現(xiàn)方法的重載。

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

function Add(firstnumber,sencondnumber) {
return firstnumber+sencondnumber;
}

只能處理兩個(gè)參數(shù),如果有多個(gè)參數(shù),或者沒有參數(shù),一個(gè)參數(shù)的情況都是處理不了的。如果沒有傳遞參數(shù),則firstnumber,sencondnumber都是未定義的,如果傳遞了一個(gè)參數(shù),就相當(dāng)于只給firstnumber賦值了,sencondnumber依然是未定義。相反如果傳遞了多于兩個(gè)的參數(shù),則相當(dāng)于firstnumber,sencondnumber都賦值了,雖然還有其他的參數(shù),但處理時(shí)都忽略掉了。如果能獲取其他的參數(shù),自然就可以處理了。此時(shí)應(yīng)該就可以想到函數(shù)的特殊參數(shù)arguments,這個(gè)包含了傳遞給函數(shù)的所有參數(shù),利用它就可以實(shí)現(xiàn)方法重載的效果。

以上的方法修改如下:
復(fù)制代碼 代碼如下:

function Add(firstnumber,sencondnumber) {
if (arguments.length == 0)//沒有傳遞參數(shù)
{
return null;
}
else if (arguments.length == 1) {//傳遞的是一個(gè)參數(shù)
return firstnumber;//也可以寫為 return arguments[0];
}
else if(arguments.length == 2)//傳遞的是兩個(gè)參數(shù)
{

return firstnumber+sencondnumber;//也可以寫為 return arguments[0]+arguments[1];
}

else {
var total=0;
for (var i = 0; i < arguments.length; i++) {
total=total+arguments[i]
}
return total;
}

}

當(dāng)然這種方法的弊端就是參數(shù)的順序不能打亂,如果函數(shù)實(shí)現(xiàn)依賴于參數(shù)的順序,就必須進(jìn)行特殊處理,例如傳遞null來占位。

由于傳遞給函數(shù)的參數(shù)是嚴(yán)格按照定義函數(shù)的順序給每一個(gè)參數(shù)賦值的,如果只想給第二個(gè)參數(shù)賦值,則必須傳遞兩個(gè)參數(shù),否則實(shí)際上傳遞的值賦值給了第一個(gè)參數(shù),并沒有賦值給第二個(gè)參數(shù)。

例如只想給sencondnumber傳值,但不想給firstnumber傳值,必須這樣調(diào)用Add(null,2)(當(dāng)然函數(shù)內(nèi)部必須處理傳遞特殊值的情況),如果這樣調(diào)用Add(2),其實(shí)是給firstnumber傳值了,相當(dāng)于調(diào)用了傳遞了一個(gè)參數(shù)的情況。

相關(guān)文章

  • javascript屏蔽右鍵代碼

    javascript屏蔽右鍵代碼

    屏蔽右鍵在某些特殊的情況下還是比較有用的,下面與大家分享個(gè)常用的屏蔽方法
    2014-05-05
  • JS如何獲取對(duì)象鍵值對(duì)中key值的方法

    JS如何獲取對(duì)象鍵值對(duì)中key值的方法

    這篇文章主要介紹了JS如何獲取對(duì)象鍵值對(duì)中key值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 微信小程序選擇器組件picker簡單入門

    微信小程序選擇器組件picker簡單入門

    微信小程序picker表單選擇器的使用,根據(jù)官方介紹的有點(diǎn)不清楚,下面這篇文章主要給大家介紹了關(guān)于微信小程序選擇器組件picker的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • 用chart.js添加動(dòng)態(tài)背景圖

    用chart.js添加動(dòng)態(tài)背景圖

    這篇文章主要為大家詳細(xì)介紹了用chart.js添加動(dòng)態(tài)背景圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • JS寫的數(shù)字拼圖小游戲代碼[學(xué)習(xí)參考]

    JS寫的數(shù)字拼圖小游戲代碼[學(xué)習(xí)參考]

    昨天沒事做,就用JS寫了個(gè)數(shù)字拼圖的小游戲,自娛自樂。 可惜關(guān)于逆序數(shù)的問題還沒解決,現(xiàn)在有時(shí)是拼不成的,大家見諒了。
    2008-10-10
  • javascript中if和switch,==和===詳解

    javascript中if和switch,==和===詳解

    這篇文章主要給大家詳細(xì)介紹了javascript中if和switch,==和===的區(qū)別和聯(lián)系,十分的細(xì)致實(shí)用,有需要的小伙伴可以參考下。
    2015-07-07
  • Bootstrap table分頁問題匯總

    Bootstrap table分頁問題匯總

    這篇文章主要為大家匯總了Bootstrap table分頁的典型問題,以及對(duì)應(yīng)每個(gè)bootstrap table分頁問題的解決方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 深入淺出分析javaScript中this用法

    深入淺出分析javaScript中this用法

    這篇文章主要介紹了javaScript中this用法,實(shí)例分析了javascript中this的用途與相關(guān)的使用技巧,需要的朋友可以參考下
    2015-05-05
  • javascript import css實(shí)例代碼

    javascript import css實(shí)例代碼

    差點(diǎn)被FF下的insertRule給帶暈了. sheet.insertRule("@import url('aa.css');",sheet.cssRules.length);
    2008-07-07
  • JS常見面試試題總結(jié)【去重、遍歷、閉包、繼承等】

    JS常見面試試題總結(jié)【去重、遍歷、閉包、繼承等】

    這篇文章主要介紹了JS常見面試試題,總結(jié)分析了javascript去重、遍歷、閉包、繼等相關(guān)算法與操作技巧,需要的朋友可以參考下
    2019-08-08

最新評(píng)論