ES6 物件中的箭頭函數
在 ES6中,您可以使用傳統函數語法和引入的簡寫方法語法在物件中定義方法語言:
var chopper = { owner: 'Zed', getOwner: function() { return this.owner; } };
var chopper = { owner: 'Zed', getOwner() { return this.owner; } };
但是,您在嘗試時可能會遇到限制在物件方法中使用箭頭函數。例如,使用以下語法將導致錯誤:
var chopper = { owner: 'John', getOwner: () => { return this.owner; } };
或
var chopper = { owner: 'John', getOwner: () => (this.owner) };
說明
箭頭函數具有特定特徵這使得它們不具有特定特徵適合用作物件
因此,當您在 ES6 物件中定義箭頭函數時,函數中的 this將引用建立物件的上下文。例如,如果您在全域範圍內定義物件 chopper,則 getOwner 中的 this 將引用全域範圍,而不是 chopper 物件。
解決方案
寫ES6 中的物件方法,應該使用傳統的函數語法或專為物件設計的簡寫方法語法:
var chopper = { owner: 'Zed', getOwner: function() { return this.owner; } }; // or var chopper = { owner: 'Zed', getOwner() { return this.owner; } };
這些方法使用正確的this 綁定,它引用chopper 物件。
以上是為什麼 ES6 中的物件方法不能使用箭頭函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!