一次搞懂 JavaScript 的 this:簡單實用的指南
前言
在 JavaScript 的世界裡,有一個讓新手困惑、讓老手心生畏懼的主題:this 到底是什麼?
「為什麼這個函式裡的
this是undefined?」 「物件的方法好好的,為什麼this突然變成了window?」 「箭頭函式的this跟普通函式不一樣?到底要怎麼判斷?」
如果你曾在開發中遇到這樣的問題,我想對你說:你並不孤單😿
雖然網路上已經有很多介紹 this 的文章,我可能也不會寫得比其他文章還深入,但 我還是想要以我目前對 this 的理解程度,站在我的視角,來分享我是如何理解 this 的。當然,這篇文章不會「完全」解釋所有 this 的邏輯,畢竟要徹底理解它,你還得翻開 ECMAScript 規範才行。但我保證,這篇文章能夠幫助你在大多數情況下快速判斷 this,甚至對 this 有更深一層的認識。
備註
這篇文章適合 對 JavaScript 有一定基礎 的開發者。文章內容將會包括:
- JavaScript 的 基本語法(如物件、函式、
class等)。 - JavaScript 的 作用域 和 閉包 是什麼(沒關係,這裡也會簡單提到)。
如果這些你還不太熟悉,建議先補充相關知識,否則讀到後面你可能會更加混亂。