this

01 直接調(diào)用

let val = 1
function func () {
    console.log(this.val)    //未指向鹰祸,訪問全局
}

func()      // -> 1

02 當(dāng)方法調(diào)用

let a = {name: 'foo', foo: function(){
    console.log (this.name)
}}
let b = {name: 'bar'}

a.foo()              // foo

b.bar = a.foo
b.bar()             // bar

b.bar = a.foo()     // foo
b.bar()             // 報錯漩符,b.bar is not a funciton

03 call & apply & bind 明確顯示

let val = 10               // 全局變量 val 
let obj = {val: 3}              
function f(a,b) {
    return a+b +this.val
}

// bind
f2 = f.bind(obj)           // f.bind({val: 3}, 1)
f2(1, 2)    // -> 3        // f2(2)     // -> 6

// call
f3 = f.call(obj, 1, 2)     //call 后面?zhèn)鲄?shù) 列表
f3          // -> 6

// apply
f4 = f.apply(obj,[1, 2])   //apply 后面?zhèn)鲄?shù) 數(shù)組
f4          // -> 6

// 若不綁定 this 指向
f.bind(null, 1, 2)()        // 13
f.call(null, 1, 2)          // 13
f.apply(null, [1,2])        // 13

// 若重復(fù)綁定 this 指向
f5 = f.bind({val: 5})
f5(1, 2)    // -> 8
f5.apply({val: 20}, [1, 2])    // this 已經(jīng)被 bind 綁定第一個對象, 此處綁定無效
f5          // -> 8
f6.call({val: 30}, [1, 2])     // 同理
f6          // -> 8

04 new func()

let val = 1
function func (val) {
    this.val = val
}

let f1 = new func(2)   
//new func() 為構(gòu)造函數(shù), 并且將作用域賦給新對象 f1并執(zhí)行函數(shù)南片,其中函數(shù)沐旨,this 也隨著指向 f1 
f1.val    // -> 2

one more thing

箭頭函數(shù)中采郎, this 指向周圍(上一級 this 指向)


bind 函數(shù)實現(xiàn)
以下為 bind 實現(xiàn)函數(shù)寺谤,以解釋 bind 多次調(diào)用時 this 指向問題

function bind2(f, thisArg, ...fixedArgs) {
    return function (...restArgs) {
        return f.apply(thisArg, [...fixedArgs, ...restArgs])
    }
}

function f(a) {
    return a + this.val
}
 f2 = bind2(f, {val: 1})        // bind2 調(diào)用時隙畜,形成閉包榛搔,thisArg(即對象)存入函數(shù)
 f2(2)      // -> 3

f3 = f2.call({val: 2, 3})       // call使用時诺凡,thisArg 已被bind2時閉包指向{val: 1}
f3          // -> 3

參考:
https://zhuanlan.zhihu.com/p/23804247
https://segmentfault.com/a/1190000015438195

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市践惑,隨后出現(xiàn)的幾起案子腹泌,更是在濱河造成了極大的恐慌,老刑警劉巖尔觉,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凉袱,死亡現(xiàn)場離奇詭異,居然都是意外死亡侦铜,警方通過查閱死者的電腦和手機(jī)专甩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钉稍,“玉大人涤躲,你說我怎么就攤上這事」蔽矗” “怎么了种樱?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長俊卤。 經(jīng)常有香客問我嫩挤,道長,這世上最難降的妖魔是什么消恍? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任俐镐,我火速辦了婚禮,結(jié)果婚禮上哺哼,老公的妹妹穿的比我還像新娘佩抹。我一直安慰自己叼风,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布棍苹。 她就那樣靜靜地躺著无宿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枢里。 梳的紋絲不亂的頭發(fā)上孽鸡,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機(jī)與錄音栏豺,去河邊找鬼彬碱。 笑死,一個胖子當(dāng)著我的面吹牛奥洼,可吹牛的內(nèi)容都是我干的巷疼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼灵奖,長吁一口氣:“原來是場噩夢啊……” “哼嚼沿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瓷患,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤骡尽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后擅编,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攀细,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年爱态,在試婚紗的時候發(fā)現(xiàn)自己被綠了谭贪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肢藐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吱韭,到底是詐尸還是另有隱情吆豹,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布理盆,位于F島的核電站痘煤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏猿规。R本人自食惡果不足惜衷快,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姨俩。 院中可真熱鬧蘸拔,春花似錦师郑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至邓萨,卻和暖如春地梨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缔恳。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工宝剖, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人歉甚。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓万细,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铃芦。 傳聞我的和親對象是個殘疾皇子雅镊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

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

  • vue組件相關(guān)練習(xí)1、設(shè)計組件定義刃滓、分類(全局仁烹、局部組件)、2咧虎、組件傳值卓缰、父傳值給子組件,用props參數(shù)接收子傳...
    軒愛青閱讀 175評論 0 0
  • 我不想和你爭辯砰诵,不是因為你說的是對的征唬,而是因為我不想成為你那樣不知黑白又自掉形象的人。 你不明事實真相茁彭,說明你絕不...
    Claire_閱讀 90評論 0 0
  • 公司:38磁療飾品--林艷--378期反省一組塾生【日精進(jìn)打卡第18天】 【經(jīng)典誦讀】 《六項精進(jìn)》大綱誦讀1遍总寒,...
    林艷的閱讀 139評論 0 0
  • 吸收的途徑 角質(zhì)層(主要途徑)細(xì)胞間隙—脂溶性細(xì)胞膜—水溶性 皮膚附屬器毛囊皮脂腺和汗腺導(dǎo)管(旁路途徑)大分子物質(zhì)...
    xiangkuuan閱讀 677評論 0 0