iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
1
自我挑戰組

JavaScript技術手冊閱讀筆記系列 第 28

第28天:箭頭函式與this()

  • 分享至 

  • xImage
  •  

在解析this的方式箭頭函式與函式宣告不同,函式宣告是以呼叫時的方式來決定,而箭頭函式在建立時就會決定this是以的當下執行環境為this。

this.name = "我是全域物件";

function f1(){
    console.log(this)
    console.log(this.name)
}

let f2 =()=>{
    console.log(this);
    console.log(this.name)
    };

let p ={
    name:'長庚',
    doF1:f1,
    doF2:f2
}
f1();
f2();
p.doF1();
p.doF2();

https://ithelp.ithome.com.tw/upload/images/20201013/201204203KUEcyFxtz.png

所謂箭頭函式建立時就會決定以的當下執行環境的this,是指事後用call()也無法重新指定this
https://ithelp.ithome.com.tw/upload/images/20201013/20120420KQvZydGLE9.png

在看一個例子

let p2 ={
    name:'還沒下凡的女朋友',
    doF1:f1,
    doF2:()=>{console.log(this);
              console.log(this.name);}
};
p2.doF1();
p2.doF2();

https://ithelp.ithome.com.tw/upload/images/20201013/201204202HI2vEruUB.png

登登
所謂箭頭函式建立時就會決定this是以當下執行環境的this
在執行p2.doF2()時,我們的箭頭函式才建立,這是在全域環境下執行的p2.doF2()!!!


上一篇
第27天:this(2)
下一篇
第29天:解構語法、餘集(...)
系列文
JavaScript技術手冊閱讀筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言