今天小編給大家分享的是js中call、apply、bind有哪些區(qū)別,相信很多人都不太了解,為了讓大家更加了解call、apply、bind的區(qū)別,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會有所收獲的哦。
創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元枝江做網(wǎng)站,已為上家服務(wù),為枝江各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
在 javascript 中,call、apply、bind 都是為了改變某個函數(shù)運(yùn)行時的上下文(context)而存在的,換句話說,就是為了改變函數(shù)體內(nèi)部 this 的指向。
js中call、apply、bind的區(qū)別
call、apply、bind三者的區(qū)別,可以通過下面這個例子來看。
var obj = { x: 81, }; var foo = { getX: function() { return this.x; } } console.log(foo.getX.bind(obj)()); //81 console.log(foo.getX.call(obj)); //81 console.log(foo.getX.apply(obj)); //81
三個輸出的都是81,但是注意看使用 bind() 方法的,他后面多了對括號。
也就是說,區(qū)別是,當(dāng)你希望改變上下文環(huán)境之后并非立即執(zhí)行,而是回調(diào)執(zhí)行的時候,使用 bind() 方法。而 apply/call 則會立即執(zhí)行函數(shù)。
總結(jié)一下:
apply 、 call 、bind 三者都是用來改變函數(shù)的this對象的指向的;
apply 、 call 、bind 三者第一個參數(shù)都是this要指向的對象,也就是想指定的上下文;
apply 、 call 、bind 三者都可以利用后續(xù)參數(shù)傳參;
bind 是返回對應(yīng)函數(shù),便于稍后調(diào)用;
apply 、call 則是立即調(diào)用 。
關(guān)于js中call、apply、bind有哪些區(qū)別就分享到這里了,希望以上內(nèi)容可以對大家有一定的參考價值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
網(wǎng)站名稱:js中call、apply、bind有哪些區(qū)別
轉(zhuǎn)載來源:http://jinyejixie.com/article40/iehgho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、靜態(tài)網(wǎng)站、云服務(wù)器、網(wǎng)站導(dǎo)航、App設(shè)計、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)