在 javascript 中,this 關(guān)鍵字指向當(dāng)前執(zhí)行上下文中的對(duì)象。具體來說:全局執(zhí)行上下文中指向 window 對(duì)象函數(shù)執(zhí)行上下文中指向函數(shù)所屬的對(duì)象方法執(zhí)行上下文中指向調(diào)用方法的對(duì)象箭頭函數(shù)中繼承父函數(shù)的 this 對(duì)象
JavaScript 中 this 的含義
在 JavaScript 中,this
是一個(gè)特殊的關(guān)鍵字,它指向當(dāng)前執(zhí)行上下文中的對(duì)象。這聽起來可能有點(diǎn)復(fù)雜,但它實(shí)際上很容易理解。
執(zhí)行上下文
JavaScript 代碼在執(zhí)行時(shí)是在不同的上下文環(huán)境中運(yùn)行的,稱為執(zhí)行上下文。每個(gè)執(zhí)行上下文都有自己的 this
對(duì)象。
全局執(zhí)行上下文
當(dāng) JavaScript 代碼在瀏覽器中運(yùn)行時(shí),它首先在全局執(zhí)行上下文中運(yùn)行。在這種情況下,this
指向 window
對(duì)象。
函數(shù)執(zhí)行上下文
當(dāng)一個(gè)函數(shù)被調(diào)用時(shí),它會(huì)創(chuàng)建自己的執(zhí)行上下文。在這個(gè)上下文中,this
指向函數(shù)所屬的對(duì)象。
方法執(zhí)行上下文
當(dāng)一個(gè)對(duì)象的方法被調(diào)用時(shí),它會(huì)創(chuàng)建自己的執(zhí)行上下文。在這種情況下,this
指向調(diào)用方法的對(duì)象。
箭頭函數(shù)
箭頭函數(shù)是一個(gè)例外。它們不創(chuàng)建自己的執(zhí)行上下文,而是繼承父函數(shù)的執(zhí)行上下文。因此,箭頭函數(shù)中的 this
始終指向父函數(shù)的 this
對(duì)象。
實(shí)踐示例
以下示例展示了如何根據(jù)不同的執(zhí)行上下文,this
如何引用不同的對(duì)象:
<code class="javascript">// 全局執(zhí)行上下文 console.log(this); // 輸出: Window // 函數(shù)執(zhí)行上下文 function myFunction() { console.log(this); // 輸出: Window } myFunction(); // 方法執(zhí)行上下文 const obj = { name: 'John', sayHello: function() { console.log(this.name); // 輸出: John } }; obj.sayHello(); // 箭頭函數(shù) const arrowFunction = () => { console.log(this); // 輸出: Window }; arrowFunction();</code>
登錄后復(fù)制
通過了解 this
對(duì)象在 JavaScript 中的運(yùn)作方式,你可以編寫更清晰、更可維護(hù)的代碼。