第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

js中call,apply和bind方法的區(qū)別和使用場景?

js中call,apply和bind方法的區(qū)別和使用場景?

喵喵時(shí)光機(jī) 2019-02-05 10:06:43
js中call,apply和bind方法的區(qū)別和使用場景
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊

在js中,所有的函數(shù)再被調(diào)用的時(shí)候都會默認(rèn)傳入兩個(gè)參數(shù),一個(gè)是this,還有一個(gè)是arguments。在默認(rèn)情況下this都是指當(dāng)前的調(diào)用函數(shù)的對象。但是有時(shí)候我們需要改變this的指向,也就是說使函數(shù)可以被其他對象來調(diào)用,那么我們應(yīng)該怎樣做呢?這時(shí)候我們就可以使用call,apply和bind方法了。
1.首先搞清楚call,apply和bind方法的來歷
在js中所有的函數(shù)都是Function的實(shí)例,而且對于Function來說,它的原型即Function.prototype中含有很多東西,其中call,apply和bind方法就是Function原型中的方法,所以根據(jù)原型的規(guī)則,所有的函數(shù)都可以使用原型中屬性和方法,所以來說,對于所有的函數(shù)都可以使用call,apply和bind方法。
簡單一句話:call,apply和bind都是Function原型中的方法,而所有的函數(shù)都是Function的實(shí)例。

查看完整回答
反對 回復(fù) 2019-03-15
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

1、call,apply和bind的區(qū)別
它們在功能上是沒有區(qū)別的,都是改變this的指向,它們的區(qū)別主要是在于方法的實(shí)現(xiàn)形式和參數(shù)傳遞上的不同。call和apply方法都是在調(diào)用之后立即執(zhí)行的。而bind調(diào)用之后是返回原函數(shù),需要再調(diào)用一次才行,
2、①:函數(shù).call(對象,arg1,arg2....)
②:函數(shù).apply(對象,[arg1,arg2,...])
③:var ss=函數(shù).bind(對象,arg1,arg2,....)
3、總結(jié)一下call,apply,bind方法:
a:第一個(gè)參數(shù)都是指定函數(shù)內(nèi)部中this的指向(函數(shù)執(zhí)行時(shí)所在的作用域),然后根據(jù)指定的作用域,調(diào)用該函數(shù)。
b:都可以在函數(shù)調(diào)用時(shí)傳遞參數(shù)。call,bind方法需要直接傳入,而apply方法需要以數(shù)組的形式傳入。
c:call,apply方法是在調(diào)用之后立即執(zhí)行函數(shù),而bind方法沒有立即執(zhí)行,需要將函數(shù)再執(zhí)行一遍。有點(diǎn)閉包的味道。
d:改變this對象的指向問題不僅有call,apply,bind方法,也可以使用that變量來固定this的指向。



查看完整回答
反對 回復(fù) 2019-03-15
  • 2 回答
  • 0 關(guān)注
  • 809 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號