日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
重載JavaScript,重載運(yùn)算符

為JavaScript添加重載函數(shù)的輔助方法

JavaScript的重載函數(shù),一般是靠對(duì)arguments判斷來(lái)操作的。

伊州網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

比如:

復(fù)制代碼

代碼如下:

var

afunc

=

function()

{

args

=

arguments;

if(args.length

==

1)

{

console.log(1);

}else

if(args.length

==

2)

{

console.log(2);

}else

if

(args.length

==

3)

{

console.log(3);

}

}

可以想象如果重載數(shù)量多的時(shí)候,要有多少的if-else判斷?。ㄊ聦?shí)上重載數(shù)量應(yīng)該不會(huì)太多吧)。

如果要對(duì)js函數(shù)進(jìn)行重載,代碼量肯定是多的。那么能不能想辦法使代碼清晰點(diǎn),再減少那些相同代碼的書(shū)寫(xiě)呢?

這就是我寫(xiě)篇文章和相關(guān)代碼的起因了。

慣例先上代碼:

復(fù)制代碼

代碼如下:

/**

KOverLoad

一個(gè)創(chuàng)建重載函數(shù)的輔助方法。

其實(shí)這個(gè)方法只是幫忙整理了參數(shù)不同的情況下的重載方法。

如果還要對(duì)參數(shù)類(lèi)型進(jìn)行判斷重載的話,請(qǐng)?jiān)谔峁┑姆椒ㄖ凶约簩?shí)現(xiàn)。

@Author

ake

2010-05-02

@weblog

*/

var

KOverLoad

=

function(scope)

{

this.scope

=

scope

||

window;

//默認(rèn)添加方法到這個(gè)對(duì)象中。同時(shí)添加的方法的this指向該對(duì)象。

this.list

=

{};

//存放重載函數(shù)的地方。

return

this;

};

KOverLoad.prototype

=

{

//添加一個(gè)重載的方法。

//@param

argFunction

重載的方法。

add:function(arg)

{

if(typeof

arg

==

"function")

{

this.list[arg.length]

=

arg;

//以參數(shù)數(shù)量做標(biāo)識(shí)存儲(chǔ)重載方法。很顯然如果你的重載方法參數(shù)數(shù)量

}

return

this;

},

//添加完所有的重載函數(shù)以后,調(diào)用該方法來(lái)創(chuàng)建重載函數(shù)。

//@param

fcString

重載函數(shù)的方法名。

load:function(fc)

{

var

self

=

this,

args,

len;

this.scope[fc]

=

function()

{

//將指定作用域的指定方法

設(shè)為重載函數(shù)。

args

=

Array.prototype.slice.call(arguments,

0);

//將參數(shù)轉(zhuǎn)換為數(shù)組。

len

=

args.length;

if(self.list[len])

{

//根據(jù)參數(shù)數(shù)量調(diào)用符合的重載方法。

self.list[len].apply(self.scope,

args);

//這里指定了作用域和參數(shù)。

}else{

throw

new

Error("undefined

overload

type");

}

}

}

};

使用

方法是我覺(jué)得比較清晰的方法:

//這是可選的作用對(duì)象。

復(fù)制代碼

代碼如下:

var

s

=function(){}

s.prototype

=

{

init:function()

{

console.log();

}

}

//構(gòu)造函數(shù)的參數(shù)可以是Object類(lèi)型的或者其他合法的類(lèi)型,如果不指定,則注冊(cè)到window對(duì)象中,并且作用域也是window。其實(shí)就是添加該重載方法到什么地方而已。

復(fù)制代碼

代碼如下:

new

KOverLoad(s.prototype).add(function(a)

{

console.log("one",a,this)

})

 .add(function(a,b)

{

console.log("two",a,b,this)

})

 .add(function(a,b,c)

{

console.log("three",a,b,c,this)

})

 .add(function(a,b,c,d)

{

console.log("four",a,b,c,d,this)

})

 .load("func");

//在這里的參數(shù)就是要?jiǎng)?chuàng)建的重載函數(shù)的方法名稱(chēng)。

完成以上操作以后,s.func就是一個(gè)重載函數(shù)。

我們可以這樣調(diào)用重載函數(shù):

復(fù)制代碼

代碼如下:

var

t

=

new

s();

t.func();//拋出錯(cuò)誤異常。因?yàn)闆](méi)有指定零參數(shù)時(shí)的函數(shù)

t.func(”o”);//one

o

Object

{}

t.func(1,2);//two

1

2

Object

{}

簡(jiǎn)單的代碼而已,如果各位有建議或者意見(jiàn),歡迎留言指教。

javascript函數(shù)能重載嗎?

當(dāng)然可以,你可以試一下的。有匿名函數(shù)的概念。

javascript

的函數(shù)你也可以把它當(dāng)成一個(gè)變量來(lái)理解的

比如

function

a(){}

相當(dāng)于定義了一個(gè)變量

var

a

=

function(){}

jequery或者javascript實(shí)現(xiàn)部分頁(yè)面重載

局部刷新和你理解的不太一樣,局部刷新會(huì)用到AJAX,js會(huì)通過(guò)一個(gè)特殊的對(duì)象異步的向服務(wù)器發(fā)起請(qǐng)求,等到服務(wù)器返回后,js根據(jù)返回的結(jié)果去更新頁(yè)面的某個(gè)部分。

舉個(gè)例子吧,假如你寫(xiě)了一個(gè)生成表格的ashx,這樣就可以在前臺(tái)去請(qǐng)求這個(gè)ashx,

$.get("test.ashx", {}, function(responseText)

{

//假如test.ashx返回的是一段html代碼

$("#div").html(responseText);

});

這樣就可以無(wú)刷新的更新某個(gè)div了。

關(guān)于這方面的內(nèi)容你可以查閱下AJAX(已經(jīng)火了很久了哈)的相關(guān)資料。

javascript怎么實(shí)現(xiàn)函數(shù)的重載

你好,Javascript 的函數(shù)的參數(shù)可以有多個(gè),但你在使用的時(shí)候可以不傳入齊全的參數(shù) 這樣就可以了比如function test(a1,a2){if(a1!=null){alert('a1');}else if(a2!=null){alert('a1 and a2');}else{alert('no argument');}}使用的時(shí)候你可以用 test('a1'); test('a1','a2');

如何在javascript中實(shí)現(xiàn)類(lèi)似java中的重載 ,最好給段代碼。

js的重寫(xiě)很簡(jiǎn)單,只要重新寫(xiě)下這個(gè)方法就好了

如下

function aaa()

{

alert("aaa");

}

aaa = function()

{ alert("bbb");}


當(dāng)前標(biāo)題:重載JavaScript,重載運(yùn)算符
網(wǎng)站鏈接:http://www.dlmjj.cn/article/dsdsdpd.html