關(guān)于JS中apply與call的用法意義及區(qū)別(轉(zhuǎn))

JavaScript中有一個call和apply方法数冬,其作用基本相同,但也有略微的區(qū)別搀庶。

先來看看JS手冊中對call的解釋:

call 方法

調(diào)用一個對象的一個方法拐纱,以另一個對象替換當前對象。

call([thisObj[,arg1[, arg2[,?? [,.argN]]]]])

參數(shù)

thisObj

可選項地来。將被用作當前對象的對象戳玫。

arg1, arg2,??, argN

可選項。將被傳遞方法參數(shù)序列未斑。

說明

call 方法可以用來代替另一個對象調(diào)用一個方法。call 方法可將一個函數(shù)的對象上下文從初始的上下文改變?yōu)橛?thisObj 指定的新對象币绩。

如果沒有提供 thisObj 參數(shù)蜡秽,那么 Global 對象被用作 thisObj。

說明白一點其實就是更改對象的內(nèi)部指針缆镣,即改變對象的this指向的內(nèi)容芽突。這在面向?qū)ο蟮膉s編程過程中有時是很有用的。

引用網(wǎng)上一個代碼段董瞻,運行后自然就明白其道理寞蚌。

functionObj(){this.value="對象田巴!";}

varvalue="global?變量";

functionFun1(){alert(this.value);}

window.Fun1();//global?變量

Fun1.call(window);//global?變量

Fun1.call(document.getElementById('myText'));//input?text

Fun1.call(newObj());//對象!

call函數(shù)和apply方法的第一個參數(shù)都是要傳入給當前對象的對象挟秤,及函數(shù)內(nèi)部的this壹哺。后面的參數(shù)都是傳遞給當前對象的參數(shù)。

運行如下代碼:

varfunc=newfunction(){this.a="func"}

varmyfunc=function(x){

vara="myfunc";

alert(this.a);

alert(x);

}

myfunc.call(func,"var");

可見分別彈出了func和var艘刚。到這里就對call的每個參數(shù)的意義有所了解了管宵。

對于apply和call兩者在作用上是相同的,但兩者在參數(shù)上有區(qū)別的攀甚。

對于第一個參數(shù)意義都一樣箩朴,但對第二個參數(shù):

apply傳入的是一個參數(shù)數(shù)組,也就是將多個參數(shù)組合成為一個數(shù)組傳入秋度,而call則作為call的參數(shù)傳入(從第二個參數(shù)開始)炸庞。

如 func.call(func1,var1,var2,var3)對應(yīng)的apply寫法為:func.apply(func1,[var1,var2,var3])

同時使用apply的好處是可以直接將當前函數(shù)的arguments對象作為apply的第二個參數(shù)傳入。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荚斯,一起剝皮案震驚了整個濱河市燕雁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鲸拥,老刑警劉巖拐格,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刑赶,居然都是意外死亡捏浊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門撞叨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來金踪,“玉大人,你說我怎么就攤上這事牵敷『恚” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵枷餐,是天一觀的道長靶瘸。 經(jīng)常有香客問我,道長毛肋,這世上最難降的妖魔是什么怨咪? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮润匙,結(jié)果婚禮上诗眨,老公的妹妹穿的比我還像新娘。我一直安慰自己孕讳,他們只是感情好匠楚,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布巍膘。 她就那樣靜靜地躺著,像睡著了一般芋簿。 火紅的嫁衣襯著肌膚如雪峡懈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天益咬,我揣著相機與錄音逮诲,去河邊找鬼。 笑死幽告,一個胖子當著我的面吹牛梅鹦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冗锁,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼齐唆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冻河?” 一聲冷哼從身側(cè)響起箍邮,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叨叙,沒想到半個月后锭弊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡擂错,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年味滞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钮呀。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡剑鞍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出爽醋,到底是詐尸還是另有隱情蚁署,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布蚂四,位于F島的核電站光戈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏证杭。R本人自食惡果不足惜田度,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望解愤。 院中可真熱鬧,春花似錦乎莉、人聲如沸送讲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哼鬓。三九已至监右,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間异希,已是汗流浹背健盒。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留称簿,地道東北人扣癣。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像憨降,于是被迫代替她去往敵國和親父虑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容