JS 中 call, apply, bind的區(qū)別

原文鏈接:http://www.reibang.com/p/56a9c2d11adc

在JS中留拾,這三者都是用來改變函數的this對象的指向的,他們有什么樣的區(qū)別呢奥秆。在說區(qū)別之前還是先總結一下三者的相似之處:

都是用來改變函數的this對象的指向的谈竿。
第一個參數都是this要指向的對象。
都可以利用后續(xù)參數傳參沮尿。
區(qū)別在哪里的丛塌,先看一個例子

var xw={
    name: "小王",
    gender: "男",
    age: 24,
    say: function(){
        alert(this.name+" , "+this.gender+" ,今年"+this.age);
    }
}
var xh={
    name: "小紅",
    gender: "女",
    age: 18
}
xw.say();

本身沒什么好說的,顯示的肯定是小王 , 男 赴邻, 今年24印衔。那么如何用xw的say方法來顯示xh的數據呢。對于call可以這樣:

xw.say.call(xh);

對于apply可以這樣:

xw.say.apply(xh);

而對于bind來說需要這樣:

xw.say.bind(xh)();

如果直接寫xw.say.bind(xh)是不會有任何結果的乍楚,看到區(qū)別了嗎当编?call和apply都是對函數的直接調用,而bind方法返回的仍然是一個函數徒溪,因此后面還需要()來進行調用才可以忿偷。那么call和apply有什么區(qū)別呢?我們把例子稍微改寫一下臊泌。

var xw={
    name: "小王",
    gender: "男",
    age: 24,
    say: function(school,grade){
        alert(this.name+" , "+this.gender+" ,今年"+this.age+" ,在"+school+"上"+grade);
    }
}
var xh={
    name: "小紅",
    gender: "女",
    age: 18
}

可以看到say方法多了兩個參數鲤桥,我們通過call/apply的參數進行傳參。對于call來說是這樣的

xw.say.call(xh,"實驗小學","六年級");       

而對于apply來說是這樣的

xw.say.apply(xh,["實驗小學","六年級"]);

看到區(qū)別了嗎渠概,call后面的參數與say方法中是一一對應的茶凳,而apply的第二個參數是一個數組,數組中的元素是和say方法中一一對應的播揪,這就是兩者最大的區(qū)別贮喧。那么bind怎么傳參呢?它可以像call那樣傳參猪狈。

xw.say.bind(xh,"實驗小學","六年級")();

但是由于bind返回的仍然是一個函數箱沦,所以我們還可以在調用的時候再進行傳參。

xw.say.bind(xh)("實驗小學","六年級");
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末雇庙,一起剝皮案震驚了整個濱河市谓形,隨后出現的幾起案子,更是在濱河造成了極大的恐慌疆前,老刑警劉巖寒跳,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異竹椒,居然都是意外死亡童太,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門胸完,熙熙樓的掌柜王于貴愁眉苦臉地迎上來书释,“玉大人,你說我怎么就攤上這事舶吗≌骼洌” “怎么了择膝?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵誓琼,是天一觀的道長。 經常有香客問我,道長腹侣,這世上最難降的妖魔是什么叔收? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮傲隶,結果婚禮上饺律,老公的妹妹穿的比我還像新娘。我一直安慰自己跺株,他們只是感情好复濒,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乒省,像睡著了一般巧颈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袖扛,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天砸泛,我揣著相機與錄音,去河邊找鬼蛆封。 笑死唇礁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的惨篱。 我是一名探鬼主播盏筐,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妒蛇!你這毒婦竟也來了机断?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绣夺,失蹤者是張志新(化名)和其女友劉穎吏奸,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體陶耍,經...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡奋蔚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了烈钞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泊碑。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖毯欣,靈堂內的尸體忽然破棺而出馒过,到底是詐尸還是另有隱情,我是刑警寧澤酗钞,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布腹忽,位于F島的核電站来累,受9級特大地震影響,放射性物質發(fā)生泄漏窘奏。R本人自食惡果不足惜嘹锁,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望着裹。 院中可真熱鬧领猾,春花似錦、人聲如沸骇扇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽少孝。三九已至拯坟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間韭山,已是汗流浹背郁季。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钱磅,地道東北人梦裂。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像盖淡,于是被迫代替她去往敵國和親年柠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內容