最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

精通「JavaScript系列」,詳解知識(shí)體系,等你開吃

2021-05-17 11:26 作者:軟件測(cè)試技術(shù)之美  | 我要投稿

摘要

JS中的函數(shù)調(diào)用,通常是使用函數(shù)名加上參數(shù)即可實(shí)現(xiàn)函數(shù)的調(diào)用,但在有些情況下,也會(huì)用到call、apply、bind實(shí)現(xiàn)函數(shù)的調(diào)用。其中call和apply的調(diào)用方法類似,只是call參數(shù)與普通函數(shù)調(diào)用類似,而apply則是使用數(shù)組能數(shù)進(jìn)行調(diào)用;bind則有點(diǎn)類似將call方法的部分動(dòng)作,下面通過(guò)實(shí)例對(duì)三個(gè)方法進(jìn)行說(shuō)明,如有疑問(wèn)錯(cuò)漏歡迎交流。

正文

JS廣泛應(yīng)用于現(xiàn)代計(jì)算機(jī)多種環(huán)境下,它不僅在Web前端中應(yīng)用廣泛、同時(shí)也在后端服務(wù)和桌面應(yīng)用中應(yīng)用廣泛,如后端Nodejs為主的應(yīng)用服務(wù),可實(shí)現(xiàn)各種應(yīng)用服務(wù),包括業(yè)務(wù)服務(wù)、數(shù)據(jù)存取等,而桌面應(yīng)用如現(xiàn)在開發(fā)環(huán)境編輯器應(yīng)用最為廣泛的visual studio code(簡(jiǎn)稱vscode),就是使用JS開發(fā)的前端工具。

函數(shù)作為JS的主要構(gòu)成部分,舉例如下,求2 個(gè)數(shù)的和:

假設(shè)公司有2個(gè)人,張三和李四,年底要給加薪,我們已經(jīng)做好了加薪的函數(shù)及兩個(gè)人的對(duì)象實(shí)例:

call

如何給兩個(gè)人加薪:

通過(guò)call(obj, args)方法來(lái)調(diào)用加薪函數(shù),其中:

Obj為call綁定的對(duì)象,args則是調(diào)用函數(shù)的參數(shù),如下代碼所示

//假設(shè)每年默認(rèn)加薪10%

apply

使用apply調(diào)用加薪函數(shù),apply(obj, [args]),其中:

Obj為call綁定的對(duì)象,[args]則是調(diào)用函數(shù)的參數(shù),數(shù)組格式,如下代碼所示

bind

bind則是先綁定到某個(gè)對(duì)象上,然后再進(jìn)行調(diào)用

vscode中demo代碼完整截圖:

小結(jié)與思考

以上舉例中僅用了一個(gè)參數(shù)的函數(shù),總結(jié)三種調(diào)用方式對(duì)比。

call : Function.call(obj, args);

apply: Function.apply(obj, [args]);

bind : newFun = Function.bind(obj);//先綁定

newFun(args);// 再調(diào)用

通過(guò)分析其應(yīng)用,對(duì)比似乎apply沒(méi)什么用,還要加個(gè)數(shù)組括號(hào),為什么要多此一舉呢?下面我們?cè)倥e多一個(gè)真實(shí)應(yīng)用的場(chǎng)景,供進(jìn)一步對(duì)比參考,求輸入的數(shù)字中最大值,可以調(diào)用Math.max函數(shù),但當(dāng)無(wú)法確認(rèn)有多少個(gè)輸入數(shù)字時(shí),這時(shí)apply的“動(dòng)態(tài)”參數(shù)調(diào)用就起作用了,如下所示代碼中:

vscode中運(yùn)行截圖

call深度應(yīng)用

如果前面介紹已經(jīng)理解了,那么實(shí)際開發(fā)中也已經(jīng)基本夠用了,但有沒(méi)有更具體的一些應(yīng)用呢,實(shí)際上也可以使用通過(guò)call的調(diào)用父類構(gòu)造實(shí)現(xiàn)“繼承”功能,子類自動(dòng)具有父類的相關(guān)屬性,這個(gè)叫“深度”應(yīng)用有點(diǎn)牽強(qiáng),但做為拋磚引玉來(lái)講吧,舉例如下:

apply深度應(yīng)用

Function.apply(obj, [args])

繼承使用apply實(shí)現(xiàn)

完整代碼如下

[args]的變種替代

可使用一個(gè)擁有l(wèi)ength,及小于length對(duì)應(yīng)的索引對(duì)象來(lái)替代,如前面所述的加薪算法調(diào)用,可以使用以下參數(shù)進(jìn)行替代:

如何將一個(gè)數(shù)組添加到另一個(gè)數(shù)組

直接上代碼:

以上兩個(gè)輸出結(jié)果都是一樣的,但apply方法更加簡(jiǎn)潔清晰,傳統(tǒng)方式使用循環(huán)逐個(gè)元素增加則有點(diǎn)臃腫。

總結(jié)說(shuō)明

以上所有相關(guān)內(nèi)容,在實(shí)戰(zhàn)中都可嘗試思考,找到發(fā)揮各自己功效的應(yīng)用場(chǎng)景,但一般情況下來(lái)講,除去一些必要地高級(jí)應(yīng)用或特定場(chǎng)景應(yīng)用外,還是要記住代碼的本質(zhì),是給人看的,而不是給機(jī)器看的,所以代碼應(yīng)該方便理解,如果太過(guò)高深或不能很容易的方便人們閱讀并理解其中的含義,那么效果也許會(huì)大打折扣。


精通「JavaScript系列」,詳解知識(shí)體系,等你開吃的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宁武县| 惠来县| 土默特右旗| 化隆| 通州区| 西贡区| 罗定市| 南靖县| 五原县| 河间市| 祁阳县| 湖南省| 凌源市| 精河县| 肇州县| 镇远县| 健康| 英吉沙县| 屏东市| 大理市| 浏阳市| 海口市| 格尔木市| 连城县| 牡丹江市| 西宁市| 宿松县| 怀仁县| 通山县| 璧山县| 姜堰市| 齐河县| 乌海市| 黄冈市| 邯郸县| 靖西县| 阿城市| 竹山县| 宁化县| 淮南市| 额尔古纳市|