js中的this

一句話喝噪,call的第一個參數(shù)

看幾個例子
例1.

button1.onclick = function(){
  console.log(this)
}

這里的this是什么汰现?
不要靠猜,是call的第一個參數(shù)君账,不知道去看MDN繁堡。
MDN的解釋:處理器里的 this 值是觸發(fā)事件的元素。

所以這里的this肯定就是button了

我們可以這樣來改一改:

button1.onclick = function(){
  console.log(this)
}

button1.onclick.call({name: 'hua'})

這里就非常明顯乡数,this就是call的第一個參數(shù)椭蹄。

例2.

button2.addEventListener('click',function(){
  console.log(this)
})

MDN的解釋:通常來說this的值是觸發(fā)事件的元素的引用
所以this肯定是button
例3.

$('ul').on('click', 'li', function(){
  console.log(this)
})

文檔解釋:當jQuery的調(diào)用處理程序時,this關鍵字指向的是當前正在執(zhí)行事件的元素净赴。對于直接事件而言绳矩,this 代表綁定事件的元素。對于代理事件而言劫侧,this 則代表了與 selector 相匹配的元素埋酬。
在這個例子中selector就是li哨啃,所以this就是li

例4.

function X(){
  return object = {
    name: 'object',
    f1(x){
      x.f2()  //調(diào)用options中的f2
    },
    f2(){
      console.log('object')
      console.log(this)
    }
  }
}

var options = {
  name: 'options',
  f1(){},
  f2(){
    console.log('options')
    console.log(this)  //打印
  }
}

var x = X()
x.f1(options)

會打印出什么呢烧栋?

做一個分析:x就是X返回的東西,也就是object拳球,接下來調(diào)用object中的f1审姓,并且傳入options,那么f1中的x.f2()祝峻,實際上調(diào)用的是options中的f2魔吐,所以this指向options,打印出options

例5.
對上邊的做一個修改

function X(){
  return object = {
    name: 'object',
    options: null,
    f1(x){      // 傳入options
      this.options = x    //將自身的options也變?yōu)閭魅氲膐ptions
      this.f2()     //this莱找,還是自己酬姆,調(diào)用obejct的f2
    },
    f2(){
      this.options.f2.call(this)  //this.options是options,調(diào)用它的f2奥溺,并且將object當做this傳過去
    }
  }
}

var options = {
  name: 'options',
  f1(){},
  f2(){
    console.log('options')
    console.log(this)  //打印
  }
}

var x = X()
x.f1(options)
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辞色,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子浮定,更是在濱河造成了極大的恐慌相满,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桦卒,死亡現(xiàn)場離奇詭異立美,居然都是意外死亡,警方通過查閱死者的電腦和手機方灾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門建蹄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事洞慎≌氡幔” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵拢蛋,是天一觀的道長桦他。 經(jīng)常有香客問我,道長谆棱,這世上最難降的妖魔是什么快压? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮垃瞧,結果婚禮上蔫劣,老公的妹妹穿的比我還像新娘。我一直安慰自己个从,他們只是感情好脉幢,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嗦锐,像睡著了一般嫌松。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奕污,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天萎羔,我揣著相機與錄音,去河邊找鬼碳默。 笑死贾陷,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的嘱根。 我是一名探鬼主播髓废,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼该抒!你這毒婦竟也來了慌洪?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤柔逼,失蹤者是張志新(化名)和其女友劉穎蒋譬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愉适,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡犯助,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了维咸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剂买。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡惠爽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞬哼,到底是詐尸還是另有隱情婚肆,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布坐慰,位于F島的核電站较性,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏结胀。R本人自食惡果不足惜赞咙,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望糟港。 院中可真熱鬧攀操,春花似錦、人聲如沸秸抚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剥汤。三九已至颠放,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秀姐,已是汗流浹背慈迈。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工若贮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留省有,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓谴麦,卻偏偏與公主長得像蠢沿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匾效,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

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

  • 目標:js中this的指向? 問題的引出 指出this指向什么 js中函數(shù)的三種調(diào)用形式 func(p1, p2)...
    放風箏的小小馬閱讀 224評論 0 0
  • 初學JavaScript經(jīng)常被this繞暈舷蟀,所以我總結一下JavaScript中的this。首先聲明本文討論的是非...
    NSO閱讀 267評論 0 1
  • JS 中的this到底是什么 首先說結論: fn.call (context,argument[]) 面哼,this ...
    _劉小c閱讀 244評論 0 1
  • 與其他語言相比野宜,函數(shù)的 this 關鍵字在JavaScript中的行為略有不同。它在嚴格模式和非嚴格模式之間也有一...
    _july77閱讀 182評論 0 1
  • Javascript中的上下文魔策,我認識的三個階段 原作者:一狂 js 中的 上下文 Context匈子,可以說是一個,...
    ipursue閱讀 361評論 0 1