js面向?qū)ο缶幊讨绾螌?shí)現(xiàn)方法重載
js中如何實(shí)現(xiàn)方法重載?這涉及到三個(gè)問(wèn)題
1.同名函數(shù)的調(diào)用問(wèn)題
2.函數(shù)中特殊的參數(shù)arguments
3.如何利用arguments實(shí)現(xiàn)方法重載
1、同名函數(shù)的調(diào)用問(wèn)題
都知道在js中如果存在多個(gè)名稱相同的函數(shù),則調(diào)用實(shí)際每次都只使用最后一個(gè),js其實(shí)是沒(méi)有重載的,也就是說(shuō),如果定義了多個(gè)同名的函數(shù),單參數(shù)不一樣,在調(diào)用時(shí),js不管參數(shù)個(gè)數(shù),只管前后順序
例如:
function test1(arg1)
{
alert("參數(shù)1:"+arg1);
}
function test1(arg1,arg2,arg3)
{
alert("參數(shù)1:"+arg1+"參數(shù)2:"+arg2+"參數(shù)3:"+arg3);
}
//測(cè)試代碼
function test(){
test1("1")
}
雖然我們調(diào)用的是test1("1"),傳遞了一個(gè)參數(shù),但實(shí)際調(diào)用的卻是test1(arg1,arg2,arg3),并沒(méi)有因?yàn)槲覀儌鬟f了一個(gè)參數(shù),而調(diào)用只有一個(gè)參數(shù)的方法。
2、函數(shù)中特殊的參數(shù)arguments
如果我們使用如下的代碼
function test1(arg1,arg2,arg3)
{
alert("參數(shù)1:"+arg1+"參數(shù)2:"+arg2+"參數(shù)3:"+arg3);
}
function test1(arg1)
{
alert("參數(shù)1:"+arg1);
}
//測(cè)試代碼
function test(){
test1("1","2")
}
我們知道調(diào)用的始終是test1(arg1),也就是只有一個(gè)參數(shù)的函數(shù),但如何獲取傳遞的其他參數(shù)呢?
這就要用到函數(shù)中特殊的參數(shù)arguments,arguments包含了所有傳遞給函數(shù)的參數(shù)
function test1()
{
var text="";
for(var i=0;i<arguments.length;i++){
text+="參數(shù)"+i+":"+arguments[i];
}
alert(text);
}
//測(cè)試代碼
function test(){
test1("1");
test1("1","2");
test1("1","2","3");
}
經(jīng)過(guò)測(cè)試發(fā)現(xiàn),arguments包含了傳遞給函數(shù)的所有參數(shù),并且arguments.length根據(jù)實(shí)際傳遞參數(shù)的個(gè)數(shù)的不同而不同,arguments.length代表了實(shí)際傳遞給函數(shù)參數(shù)的個(gè)數(shù)。
3、如何在js中實(shí)現(xiàn)函數(shù)的重載?
經(jīng)過(guò)以上的測(cè)試發(fā)現(xiàn),在js中不能直接實(shí)現(xiàn)函數(shù)的重載,但有沒(méi)有辦法實(shí)現(xiàn)類似重載效果的方法呢?
可以,主要就是利用arguments
例如:
function test1()
{
var text="";
if(arguments.length==1)
{
//調(diào)用一個(gè)參數(shù)的方法
}
else if(arguments.length==2)
{
//調(diào)用兩個(gè)參數(shù)的方法
}
else { //其他的方法
}
}
相關(guān)文章
nuxtjs通過(guò)ecosystem.config.js配置pm2的方法
ecosystem.config.js 是一個(gè)特殊的配置文件,它允許您定義應(yīng)用的各種屬性,如腳本路徑、環(huán)境變量、日志設(shè)置等,這篇文章主要介紹了nuxtjs通過(guò)ecosystem.config.js配置pm2的方法,需要的朋友可以參考下2024-03-03
js history對(duì)象簡(jiǎn)單實(shí)現(xiàn)返回和前進(jìn)
返回和前進(jìn)大家應(yīng)該不陌生吧,瀏覽器上面的返回和前進(jìn)按鈕大家瀏覽網(wǎng)頁(yè)時(shí)都會(huì)應(yīng)到的,下面就為大家介紹下js中是如何實(shí)現(xiàn)所謂的返回和前進(jìn)2013-10-10
詳解關(guān)閉令人抓狂的ESlint 語(yǔ)法檢測(cè)配置方法
這篇文章主要介紹了詳解關(guān)閉令人抓狂的ESlint 語(yǔ)法檢測(cè)配置方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

