亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解JS函數(shù)重載

 更新時間:2014年12月04日 10:03:14   投稿:hebedich  
本文主要介紹了利用JavaScript中的特殊對象arguments來模擬函數(shù)重載的解決方案,非常的實用,給需要的小伙伴參考下

JS的函數(shù)定義可以指定形式參數(shù)名稱,多多少少我們會以為js至少可以支持參數(shù)個數(shù)不同的方法重載,然而遺憾的是這僅僅是一個假象,js所有的參數(shù)都是以arguments傳遞過去的,這個參數(shù)類似于數(shù)組,在函數(shù)調(diào)用的時候,所有的實參都是保存在了這個數(shù)據(jù)結(jié)構(gòu)里面,我們定義函數(shù)的時候所指定的形式參數(shù)其實是為這個數(shù)據(jù)結(jié)構(gòu)里面的數(shù)據(jù)定義一個快捷的訪問方式。也就是說js所有的函數(shù)都是支持無限個參數(shù)的,加上數(shù)據(jù)類型是弱類型,那么JS的函數(shù)除了名稱就真的沒有方法區(qū)別了?

  辦法總是有的,我們可以利用JavaScript中的特殊對象arguments來模擬函數(shù)重載。用它來判斷傳入?yún)?shù)的個數(shù)或類型以區(qū)分重載。

1.根據(jù)參數(shù)個數(shù)重載

js判斷傳入?yún)?shù)數(shù)量可以用arguments.length這個屬性來判斷;

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

<script type="text/javascript">
function add() {
    if (arguments.length == 1) {
        alert(arguments[0] + 10);
    }
    else if (arguments.length == 2) {
        alert(arguments[0] + arguments[1]);
    }
}
//函數(shù)調(diào)用
add(10);
add(10, 20);
</script>

2.根據(jù)參數(shù)類型重載

判斷變量類型的3種方法:
1.用 typeof 語句判斷變量類型,typeof語句返回類型對應(yīng)的字符串。
2.用 instanceof 語句判斷變量類型,instanceof語句返回true/false。
3.用 constructor 屬性判斷變量類型,這個屬性返回用來構(gòu)造該變量的構(gòu)造函數(shù)引用。
對照表:可以看出用 typeof 不能準(zhǔn)確的判斷出具體的類型,所以我們用 constructor 來進(jìn)行判斷。

typeof string number object function boolean object object
constructor String Number Object Function Boolean Array User Define

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

<script type="text/javascript">
function add()
{
    if (arguments.length == 0) return 0;
    var sum=0;
    for(var i=0; i<arguments.length; i++){
        if(arguments[i].constructor == Number){
        //或者改為:if(arguments[i] instanceof Number)
        //或者改為:if(typeof(arguments[i])=="number")
        sum += arguments[i];
      }
    }
    return sum;
}
//函數(shù)調(diào)用
alert(add(10));
alert(add(10,20));
</script>

小伙伴們是否理解了javascript函數(shù)重載的方法了呢,有疑問就留言吧

相關(guān)文章

  • JavaScript數(shù)據(jù)綁定實現(xiàn)一個簡單的 MVVM 庫

    JavaScript數(shù)據(jù)綁定實現(xiàn)一個簡單的 MVVM 庫

    MVVM 是 Web 前端一種非常流行的開發(fā)模式,利用 MVVM 可以使我們的代碼更專注于處理業(yè)務(wù)邏輯而不是去關(guān)心DOM 操作。接下來通過本文給大家介紹JavaScript使用數(shù)據(jù)綁定實現(xiàn)一個簡單的 MVVM 庫,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • ajax接收后臺數(shù)據(jù)在html頁面顯示

    ajax接收后臺數(shù)據(jù)在html頁面顯示

    本篇文章主要介紹了ajax接收后臺數(shù)據(jù)在html頁面顯示的方法,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 基于JS快速實現(xiàn)導(dǎo)航下拉菜單動畫效果附源碼下載

    基于JS快速實現(xiàn)導(dǎo)航下拉菜單動畫效果附源碼下載

    這是一個帶變形動畫特效的下拉導(dǎo)航菜單特效。該導(dǎo)航菜單在菜單項之間切換時,下拉菜單會快速的根據(jù)菜單內(nèi)容的大小來動態(tài)變形,顯示合適的下拉菜單大小,效果非常棒,對導(dǎo)航下拉菜單效果感興趣的朋友一起通過本文學(xué)習(xí)吧
    2016-10-10
  • 關(guān)于JavaScript中異步/等待的用法與理解

    關(guān)于JavaScript中異步/等待的用法與理解

    這篇文章主要給大家介紹了關(guān)于JavaScript中異步/等待的用法與理解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • JavaScript類的繼承操作實例總結(jié)

    JavaScript類的繼承操作實例總結(jié)

    這篇文章主要介紹了JavaScript類的繼承操作,結(jié)合實例形式總結(jié)分析了JavaScript面向?qū)ο蟪绦蛟O(shè)計中類的繼承常見實現(xiàn)方式與操作技巧,需要的朋友可以參考下
    2018-12-12
  • 微信小程序整個頁面的自動適應(yīng)布局的實現(xiàn)

    微信小程序整個頁面的自動適應(yīng)布局的實現(xiàn)

    這篇文章主要介紹了微信小程序整個頁面的自動適應(yīng)布局的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • JS實現(xiàn)動態(tài)生成html table表格的方法分析

    JS實現(xiàn)動態(tài)生成html table表格的方法分析

    這篇文章主要介紹了JS實現(xiàn)動態(tài)生成html table表格的方法,結(jié)合實例形式分析了javascript針對數(shù)組數(shù)據(jù)的讀取、遍歷以及動態(tài)生成相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • JavaScript實現(xiàn)判斷時間間隔是否連續(xù)為一天

    JavaScript實現(xiàn)判斷時間間隔是否連續(xù)為一天

    這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實現(xiàn)判斷時間間隔是否連續(xù)為一天,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2024-01-01
  • JavaScript中的無阻塞加載性能優(yōu)化方案

    JavaScript中的無阻塞加載性能優(yōu)化方案

    這篇文章主要介紹了JavaScript中的無阻塞加載性能優(yōu)化方案,本文講解了Deferred Scripts 延期腳本、Dynamic Script Elements 動態(tài)腳本元素、XMLHttpRequest Script Injection XHR腳本注入等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • echarts大屏字體自適應(yīng)的方法步驟

    echarts大屏字體自適應(yīng)的方法步驟

    這篇文章主要介紹了echarts大屏字體自適應(yīng)的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評論