js是的this與箭頭函數(shù)中的this

請搭配 https://zhuanlan.zhihu.com/p/57204184 使用

以下內(nèi)容改編自 https://www.cnblogs.com/jeodeng/p/10658590.html

// 先給window加一個id,以便于確認(rèn)之后this的指向
window.id = 0;
// 聲明一個函數(shù)fn
const fn = {
  id: 1,
  say: function() {
    console.log('id:', this.id);
  },
 // 1, fn調(diào)用say,this指向fn

  sayArrow: () => {
    console.log('id:', this.id);
  },
 // 0, 箭頭函數(shù)雖然定義在fn中,但fn不是作用域,作用域是指函數(shù)內(nèi)部,繼續(xù)往外找,到了最外層window

  say1: function() {
    setTimeout(function() {
      console.log('id:', this.id);
    }, 1000);
  },
// 0, setTimeout傳入的回調(diào)方法其實是在setTimeout中執(zhí)行的,沒有其它對象調(diào)用該回調(diào)方法,所以回調(diào)方法的this指向window

  say2: function() {
    let that = this;
    setTimeout(function() {
      console.log('id:', that.id);
    }, 1000);
  },
// 1, that指向fn,又把fn引用傳進了setTimeout回調(diào)方法

  say3: function() {
    setTimeout(() => {
      console.log('id:', this.id);
    }, 1000);
  },
/**
1, setTimeout傳入了一個匿名箭頭函數(shù),相當(dāng)于
say3: function() {
  var temp = () => {
      console.log('id:', this.id);
    };
    setTimeout(temp, 1000);
  }
箭頭函數(shù)的this指向它的作用域,箭頭函數(shù)是在say3函數(shù)中定義的,say3的this指向調(diào)用它的fn
**/

  say4: () => {
    setTimeout(() => {
      console.log('id:', this.id);
    }, 1000);
  },
// 0, 基于上面的解釋,say4是在fn中定義的,fn是對象,不是say4的作用域,所以繼續(xù)往上,到達(dá)window

  say5: () => {
    setTimeout(function() {
      console.log('id:', this.id);
    }, 1000);
  },
};
// 0,解釋等同于 say1
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 箭頭函數(shù) 1.定義對象和方法 JS 中對象方法的定義方式是在對象上定義一個指向函數(shù)的屬性,當(dāng)方法被調(diào)用的時候,方法...
    ThunderChen閱讀 1,682評論 0 2
  • 一、前言 只有光頭才能變強 認(rèn)識我的朋友可能都知道我這陣子去實習(xí)啦,去的公司說是用SpringCloud(但我覺得...
    Java3y閱讀 4,803評論 6 163
  • 作者:李旺成 時間:2016年4月3日 “Android MVP 詳解(下)”已經(jīng)發(fā)布,歡迎大家提建議。 MVP ...
    diygreen閱讀 129,343評論 85 1,321
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 7,822評論 0 4
  • 公元:2019年11月28日19時42分農(nóng)歷:二零一九年 十一月 初三日 戌時干支:己亥乙亥己巳甲戌當(dāng)月節(jié)氣:立冬...
    石放閱讀 7,449評論 0 2

友情鏈接更多精彩內(nèi)容