JavaScript this

參數(shù)this在面向?qū)ο缶幊痰臅r候非常重要沼沈,它的值取決于調(diào)用的模式瀑凝。


在JavaScript中永票,一共有4中調(diào)用模式浪默,方法調(diào)用模式喉童,函數(shù)調(diào)用模式者填,構(gòu)造器調(diào)用模式(new)和apply調(diào)用模式(apply忌堂,call证舟,bind)颂暇,這些構(gòu)造模式在如何初始化關(guān)鍵參數(shù)上存在差異缺谴。


方法調(diào)用模式

當(dāng)一個函數(shù)被保存為對象的一個屬性時,我們稱它為該對象的一個方法蟀架。當(dāng)我們調(diào)用該方法時瓣赂,this被綁定到該對象上。

調(diào)用方法的方式通常是使用點表達式(.)或者方括號下標表達式([])片拍。如:


方法調(diào)用模式

函數(shù)調(diào)用模式

當(dāng)一個函數(shù)并非一個對象的屬性時煌集,它就是被當(dāng)做一個函數(shù)來調(diào)用的。

在函數(shù)調(diào)用模式下捌省,this被綁定在全局對象上苫纤。在《JavaScript語言精粹》中,被指出這是一種語言設(shè)計上的錯誤纲缓。如果正常卷拘,在內(nèi)部函數(shù)引用this,應(yīng)該被綁定在它的外部函數(shù)上而不是全局對象祝高。如:


函數(shù)調(diào)用模式(this非正常情況)

所以栗弟,解決這個問題的方法是在外部函數(shù)把this保存起來,在內(nèi)部函數(shù)中使用工闺。如:


函數(shù)調(diào)用模式(this正確綁定)

構(gòu)造器調(diào)用模式

如果在一個函數(shù)前加上new關(guān)鍵字乍赫,那么將會創(chuàng)建一個直接連接到該函數(shù)的prototype成員的新對象瓣蛀,并且將this綁定到新對象上。


構(gòu)造器調(diào)用模式

apply調(diào)用模式(apply雷厂,call惋增,bind)

因為JavaScript是一門函數(shù)式的面向?qū)ο缶幊陶Z言,所以函數(shù)可以擁有方法改鲫。

而apply诈皿,call,bind都可以用來改變this的指向像棘,所以理所應(yīng)答可以綁定this對象稽亏。這里就不展開了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讲弄,一起剝皮案震驚了整個濱河市措左,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌避除,老刑警劉巖怎披,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瓶摆,居然都是意外死亡凉逛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門群井,熙熙樓的掌柜王于貴愁眉苦臉地迎上來状飞,“玉大人,你說我怎么就攤上這事书斜∥鼙玻” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵荐吉,是天一觀的道長焙糟。 經(jīng)常有香客問我,道長样屠,這世上最難降的妖魔是什么穿撮? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮痪欲,結(jié)果婚禮上悦穿,老公的妹妹穿的比我還像新娘。我一直安慰自己业踢,他們只是感情好栗柒,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著知举,像睡著了一般傍衡。 火紅的嫁衣襯著肌膚如雪深员。 梳的紋絲不亂的頭發(fā)上负蠕,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天蛙埂,我揣著相機與錄音,去河邊找鬼遮糖。 笑死绣的,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的欲账。 我是一名探鬼主播屡江,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赛不!你這毒婦竟也來了惩嘉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤踢故,失蹤者是張志新(化名)和其女友劉穎文黎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體殿较,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡耸峭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了淋纲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劳闹。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖洽瞬,靈堂內(nèi)的尸體忽然破棺而出本涕,到底是詐尸還是另有隱情,我是刑警寧澤伙窃,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布菩颖,位于F島的核電站,受9級特大地震影響对供,放射性物質(zhì)發(fā)生泄漏位他。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一产场、第九天 我趴在偏房一處隱蔽的房頂上張望鹅髓。 院中可真熱鬧,春花似錦京景、人聲如沸窿冯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽醒串。三九已至执桌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芜赌,已是汗流浹背仰挣。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缠沈,地道東北人膘壶。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像洲愤,于是被迫代替她去往敵國和親颓芭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

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

  • Javascript this 在JavaScript中柬赐, this 是當(dāng)前執(zhí)行函數(shù)的上下文亡问。 JavaScri...
    Cause_XL閱讀 397評論 0 1
  • 我們現(xiàn)在知道了每個函數(shù)的this是在運行的時候進行綁定的,完全取決于函數(shù)的調(diào)用位置肛宋,也就是該函數(shù)的調(diào)用方法州藕。 關(guān)于...
    FeRookie閱讀 1,052評論 0 5
  • 函數(shù)和對象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念悼吱。通過函數(shù)可以封裝任意多條語句慎框,而且...
    道無虛閱讀 4,585評論 0 5
  • 歡迎來我的博客閱讀:《加深對 JavaScript This 的理解》 我相信你已經(jīng)看過很多關(guān)于 JavaScri...
    JC_Huang閱讀 405評論 0 4
  • 英文原文地址:All this翻譯:姜樂衣 全局作用域下的this 在瀏覽器中,當(dāng)this處于全局作用域時后添,thi...
    姜樂衣閱讀 3,859評論 0 5