1.javascript 中是沒(méi)有重載函數(shù)這個(gè)概念的!
首先javascript是沒(méi)有重載函數(shù)這個(gè)概念的,很久以前,我用javascript做網(wǎng)頁(yè)的時(shí)候,寫(xiě)一些簡(jiǎn)單的效果,根本不需要用到重載函數(shù),當(dāng)寫(xiě)游戲的時(shí)候,有大量的函數(shù)的時(shí)候,就想用重載函數(shù)了,沒(méi)想到j(luò)avascript不支持。
我們來(lái)簡(jiǎn)單用兩種方式來(lái)"模擬"下重載函數(shù)。
2.根據(jù)參數(shù)的個(gè)數(shù)來(lái)判斷
javascript的函數(shù)中有一個(gè)叫arguments的變量,是記錄參數(shù)的一個(gè)數(shù)組,我們可以用這個(gè)來(lái)判斷參數(shù)的個(gè)數(shù),然后分別執(zhí)行不同的內(nèi)容,就是同一個(gè)函數(shù)可以有不同效果,跟C++等強(qiáng)類(lèi)型語(yǔ)言的重載函數(shù)還是相差很大。你可以這樣寫(xiě),參數(shù)全部注釋掉,告訴使用函數(shù)者,這個(gè)函數(shù)最多支持3個(gè)參數(shù),具體參數(shù)在函數(shù)里面再獲取。支持重載函數(shù)的注釋一定要多寫(xiě)點(diǎn),這樣會(huì)清晰些,最好附上調(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ù)類(lèi)型不同來(lái)判斷
javascript有一個(gè)關(guān)鍵字叫typeof,可以判斷出一個(gè)變量的類(lèi)型。
var temp = "say"; //stringvar temp = 1; //numbervar temp = undefined; //undefinedvar temp = null; //objectvar temp = {}; //objectvar temp = []; //objectvar temp = true; //booleanvar 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)知識(shí),感興趣的朋友一起學(xué)習(xí)吧!
新聞熱點(diǎn)
疑難解答