在ES6 物件中使用箭頭函數
在ES6 中,定義物件方法有兩種方法:使用傳統函數語法和使用簡寫形式。這兩種方法都是有效的:
var chopper = { owner: 'Zed', getOwner: function() { return this.owner; } };
var chopper = { owner: 'Zed', getOwner() { return this.owner; } }
但是,在物件方法中使用箭頭函數則呈現不同的情況。讓我們更詳細地探討一下。
箭頭函數和物件方法
箭頭函數不適合定義物件方法。這是因為它們繼承了周圍詞法上下文的 this 值,該值可能與物件內的 this 值不同。
例如,考慮以下程式碼:
var chopper = { owner: 'John', getOwner: () => { return this.owner; } };
在此範例中,getOwner 方法中的this 指的是window 物件(或嚴格模式下的globalThis 物件),而不是chopper 物件。結果,this.owner 表達式將傳回 undefined,拋出錯誤。
傳統函數語法vs. ES6 方法語法
對於定義物件方法,是建議使用傳統函數語法或ES6 方法語法,這兩種語法都在
這是一個使用傳統函數語法的範例:
var chopper = { owner: 'Zed', getOwner: function() { return this.owner; } };
這是一個使用ES6 方法語法的範例:
var chopper = { owner: 'Zed', getOwner() { return this.owner; } };
這些方法使用this 關鍵字來引用當前對象,確保this.owner 表達式返回正確的
結論
雖然箭頭函數為定義簡單函數提供了簡潔的語法,但它們不適合用作ES6 中的物件方法。為此,建議堅持使用傳統函數語法或 ES6 方法語法,這兩種語法都提供了更清晰、更可靠的方式來定義物件上的方法。
以上是為什麼在定義 ES6 物件方法時應避免使用箭頭函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!