JavaScript重載函數(shù)實(shí)例剖析

字號:


    通過本文給大家簡單介紹下JavaScript重載函數(shù)的相關(guān)知識,在js中有沒有重載函數(shù)這個(gè)概念呢?很多朋友都很模糊,說不太清楚,下面通過本文給大家介紹js重載函數(shù),一起學(xué)習(xí)吧
    1.javascript 中是沒有重載函數(shù)這個(gè)概念的!
    首先javascript是沒有重載函數(shù)這個(gè)概念的,很久以前,我用javascript做網(wǎng)頁的時(shí)候,寫一些簡單的效果,根本不需要用到重載函數(shù),當(dāng)寫游戲的時(shí)候,有大量的函數(shù)的時(shí)候,就想用重載函數(shù)了,沒想到j(luò)avascript不支持。
    我們來簡單用兩種方式來"模擬"下重載函數(shù)。
    2.根據(jù)參數(shù)的個(gè)數(shù)來判斷
    javascript的函數(shù)中有一個(gè)叫arguments的變量,是記錄參數(shù)的一個(gè)數(shù)組,我們可以用這個(gè)來判斷參數(shù)的個(gè)數(shù),然后分別執(zhí)行不同的內(nèi)容,就是同一個(gè)函數(shù)可以有不同效果,跟C++等強(qiáng)類型語言的重載函數(shù)還是相差很大。你可以這樣寫,參數(shù)全部注釋掉,告訴使用函數(shù)者,這個(gè)函數(shù)最多支持3個(gè)參數(shù),具體參數(shù)在函數(shù)里面再獲取。支持重載函數(shù)的注釋一定要多寫點(diǎn),這樣會清晰些,最好附上調(diào)用例子。
    /**
    * Return sum of a and b and less than limitNumber
    * @param {Number} a
    * @param {Number} b
    * @param {Number} limitNumber
    */
    function add(/*a, b, limitNumber*/){
    var a,b,limitNumber;
    a = arguments[0];
    b = arguments[1];
    if(arguments.length == 3){
    limitNumber = arguments[2];
    if(a + b > limitNumber){
    return limitNumber;
    }
    }
    return a + b;
    }
    3.根據(jù)參數(shù)類型不同來判斷
    javascript有一個(gè)關(guān)鍵字叫typeof,可以判斷出一個(gè)變量的類型。
    var temp = "say"; //string
    var temp = 1; //number
    var temp = undefined; //undefined
    var temp = null; //object
    var temp = {}; //object
    var temp = []; //object
    var temp = true; //boolean
    var temp = function (){} //function 
    function testFunction(a){
    if(typeof(a) == "number"){
    //do something
    }else if(typeof(a) == "string"){
    //do something
    }
    }
    以上內(nèi)容是小編給大家介紹的javascript重載函數(shù)的相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧!