iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0

Hello,大家好~歡迎再次回到JavaScript初學者成長日記!
今天來說個this,這真是博大精深的知識阿!
在 JavaScript 中,this 是一個特別的關鍵字,用於引用當前函數或物件的上下文。
先來看看ECMAScript 標準規範 對 this 的定義:
「The this keyword evaluates to the value of the ThisBinding of the current execution context.」
接著來看MDN 對 this 的定義:
「In most cases, the value of this is determined by how a function is called.」。
所以,在JavaScript裡this是會變動的,這就是它難的原因阿!this跟寫在哪裡並無關係,而是跟只跟誰呼叫有關。以下有五個判斷this的方式:
1、 誰呼叫,誰就是this;沒人呼叫 this = 全域物件(window)
2、 是否有使用箭頭函數,箭頭函數是沒有arguments,也沒有this的
3、 是否有使用new,new會將this指向{}
4、 是否有使用call(),apply(),bind
5、 是否開啟嚴格模式
讓我們分別舉例:

  • 誰呼叫,誰就是this;沒人呼叫 this = 全域物件(window)
    https://ithelp.ithome.com.tw/upload/images/20241008/20169421306A2ulTay.jpg
  • 是否有使用箭頭函數,箭頭函數是沒有arguments,也沒有this的
    https://ithelp.ithome.com.tw/upload/images/20241008/20169421qtagh0USq8.jpg
  • 是否有使用new,new會將this指向{}
    https://ithelp.ithome.com.tw/upload/images/20241008/20169421QlD0jL57IV.jpg
  • 是否有使用call(),apply(),bind
    https://ithelp.ithome.com.tw/upload/images/20241008/20169421wq4hKXO31s.jpg
  • 是否開啟嚴格模式
    https://ithelp.ithome.com.tw/upload/images/20241008/20169421c6p7kiMagN.jpg

關於誰是this這件事,對於我這新手來說,到目前還是很難秒判斷的,只能在多多練習啦!
那明天就來介紹一下一個JavaScript的框架,明天見囉!掰!


上一篇
閉包
下一篇
Alpine.js簡介
系列文
JavaScript初學者成長日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言