JS基礎(chǔ)知識(shí)-this

與其他語(yǔ)言相比碉克,函數(shù)的 this 關(guān)鍵字在 JavaScript 中的表現(xiàn)略有不同凌唬,此外,在嚴(yán)格模式和非嚴(yán)格模式之間也會(huì)有一些差別漏麦。

在絕大多數(shù)情況下客税,函數(shù)的調(diào)用方式?jīng)Q定了this的值。所以導(dǎo)致了this使用場(chǎng)景非常之多更耻,具體有哪些呢?

  1. 作為普通函數(shù)調(diào)用
  2. 使用call捏膨,bind秧均,apply調(diào)用
  3. 多為對(duì)象方法被調(diào)用
  4. 在class中調(diào)用
  5. 箭頭函數(shù)

重點(diǎn)J澄辍!D亢>馄摺!

this的取什么值是函數(shù)執(zhí)行的時(shí)候決定的讶隐,而不是函數(shù)在定義的確定的起胰。
舉例說(shuō)明

  • this在class中的調(diào)用
    function fn1() {
      console.log(this)
    }
    fn1()

此處的this指向windows,然后我們是用call改變一下this的指向再來(lái)看看this指向巫延。

    fin1.call({ x: 100 })  // {x:100}

此時(shí),this的指向改為了傳入的對(duì)象效五。同樣的bind也可以改變this的指向。

    const fn2 = fn1.bind({ x: 200 })
    fn2()  // {x:200}

apply同樣也是可以的炉峰。

  1. bind改變this指針畏妖,直接運(yùn)行函數(shù),參數(shù)為依次傳入疼阔。
  2. bind改變this指針戒劫,返回一個(gè)函數(shù),參數(shù)是依次傳入婆廊。
    3.apply改變this指針迅细,直接運(yùn)行函數(shù),參數(shù)必須為數(shù)組淘邻。
  • 作為對(duì)象方法被調(diào)用
    const zhangsan = {
      name: '張三',
      sayHi: function () {
        console.log(this)
      }
    }
    zhangsan.sayHi()  //{name: "張三", sayHi: ?}

  1. 此處的this指向?qū)ο髲埲?/li>
  • 在class中調(diào)用
    class Pepple {
      constructor(name) {
        this.name = name
      }
      sayHi() {
        console.log(this)
      }
    }
    const zhang = new Pepple('張三')
    zhang.sayHi() 
  1. 此處的this指向zhang的對(duì)象
  • 在箭頭函數(shù)中使用
    const zhangsan = {
      name: '張三',
      whit() {
        setTimeout(function () {
          console.log(this)
        }, 1000);
      },
      whit1() {
        setTimeout(() => {
          console.log(this)
        }, 1000);
      }
    }
    zhangsan.whit()  
    zhangsan.whit1()  
  1. 沒(méi)有使用箭頭函數(shù)指向了windows,使用了箭頭函數(shù)的指向了張三的對(duì)象
  2. 箭頭函數(shù)的this指向永遠(yuǎn)是上一級(jí)this的指向

至此茵典,每個(gè)this的不同使用場(chǎng)景都已經(jīng)通過(guò)demo的形式展示完畢,要想真正的學(xué)懂this宾舅,那就需要聯(lián)合我們之前的class统阿,作用域還有個(gè)人的練習(xí)。希望大家可以通過(guò)上述的案例中學(xué)到東西筹我。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扶平,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蔬蕊,更是在濱河造成了極大的恐慌结澄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岸夯,死亡現(xiàn)場(chǎng)離奇詭異概而,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)囱修,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門赎瑰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人破镰,你說(shuō)我怎么就攤上這事压储。” “怎么了源譬?”我有些...
    開(kāi)封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)刮刑。 經(jīng)常有香客問(wèn)我,道長(zhǎng)养渴,這世上最難降的妖魔是什么雷绢? 我笑而不...
    開(kāi)封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任理卑,我火速辦了婚禮翘紊,結(jié)果婚禮上藐唠,老公的妹妹穿的比我還像新娘帆疟。我一直安慰自己,他們只是感情好宇立,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布踪宠。 她就那樣靜靜地躺著,像睡著了一般殴蓬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天津函,我揣著相機(jī)與錄音,去河邊找鬼尔苦。 笑死行施,一個(gè)胖子當(dāng)著我的面吹牛允坚,可吹牛的內(nèi)容都是我干的蛾号。 我是一名探鬼主播稠项,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼展运,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了拗胜?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤埂软,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后所灸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庆寺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年懦尝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤圃。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖伍绳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冲杀,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布剩檀,位于F島的核電站旺芽,受9級(jí)特大地震影響沪猴,放射性物質(zhì)發(fā)生泄漏采章。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一担租、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧翩活,春花似錦、人聲如沸菠镇。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至程癌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嵌莉,已是汗流浹背捻脖。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留可婶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓矛渴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蚕涤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • 1.概念 在JavaScript中揖铜,this 是指當(dāng)前函數(shù)中正在執(zhí)行的上下文環(huán)境剂习,因?yàn)檫@門語(yǔ)言擁有四種不同的函數(shù)調(diào)...
    BluesCurry閱讀 1,122評(píng)論 0 2
  • 前言 面試官出很多考題较沪,基本都會(huì)變著方式來(lái)考察this指向,看候選人對(duì)JS基礎(chǔ)知識(shí)是否扎實(shí)尸曼。讀者可以先拉到底部看總...
    若川i閱讀 1,104評(píng)論 0 10
  • 1. this之謎 在JavaScript中,this是當(dāng)前執(zhí)行函數(shù)的上下文控轿。因?yàn)镴avaScript有4種不同的...
    百里少龍閱讀 988評(píng)論 0 3
  • JS中this的指向問(wèn)題不同于其他語(yǔ)言拂封,JS中的this不是指向定義它的位置鹦蠕,而是在哪里調(diào)用它就指向哪里冒签。 JS中...
    艾薩克菊花閱讀 485評(píng)論 0 0
  • 函數(shù)和對(duì)象 1钟病、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門語(yǔ)言來(lái)說(shuō)都是核心的概念。通過(guò)函數(shù)可以封裝任意多條語(yǔ)句肠阱,而且...
    道無(wú)虛閱讀 4,525評(píng)論 0 5