前端面試必問之徹底搞懂this指向

this是JavaScript中的一個關鍵字,但它的使用相比較其他的關鍵字更復雜。
this會在執(zhí)行上下文中綁定一個對象,在不同的執(zhí)行條件下會綁定不同的對象。
接下來,我們一起來徹底搞定this到底是如何綁定的吧!

一、理解this

1.1 為什么使用this

使用this有什么意義呢?下面的代碼中,我們通過對象字面量創(chuàng)建出來一個對象,在對象的幾個方法中都使用到了對象中定義的name屬性,
不使用this,那么我們的代碼會是下面的寫法:

let obj = {
   cat: "Tom",
   mouse: 'Jerry',
   hobby: function() {
      alert(`${obj.cat}喜歡追逐${obj.mouse}`);
   },
   eating: function() {
      alert(`${obj.cat}吃${obj.mouse}`);
   }
}

在方法中,使用catmouse的地方都需要通過obj的引用(變量名稱)來獲取。
但是這樣做存在一個很大的弊端:如果我將obj的名稱換成了story,那么所有方法中使用obj的地方都換成story.
事實上,在實際開發(fā)中,我們都會使用this來進行優(yōu)化:

let obj = {
   cat: "Tom",
   mouse: 'Jerry',
   hobby: function() {
      alert(`${this.cat}喜歡追逐${this.mouse}`);
   },
   eating: function() {
      alert(`${this.cat}吃${this.mouse}`);
   }
}

通過對比就會發(fā)現(xiàn),this可以讓我們更方便的引用對象,易于復用。

1.2 this指向

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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