在 ES6 中,可以使用傳統函數語法或簡潔方法語法來定義物件方法。但是,我們可以在這種情況下利用新引入的箭頭函數嗎?
嘗試使用並遇到錯誤:
嘗試使用箭頭函數作為物件方法,如下所示,導致錯誤:
var chopper = { owner: 'John', getOwner: () => { return this.owner; } };
推理:
箭頭函數在物件方法中無法如預期運行,因為它們捕捉詞法this 值,該值位於物件上下文之外。這導致 this 引用全域 this 或詞法封閉函數的 this,而不是物件實例。
替代方案與建議:
對於物件方法,傳統的應使用函數語法或 ES6方法語法:
// Traditional function syntax var chopper = { owner: 'Zed', getOwner: function() { return this.owner; } }; // ES6 method syntax var chopper = { owner: 'Zed', getOwner() { return this.owner; } };
未綁定箭頭函數(被拒絕的提案):
有一項關於未綁定箭頭函數的提案,該提案將引入類似於箭頭函數的語法,但具有單獨的this 綁定。然而,這個提案被拒絕了,因為它只是減少了樣板程式碼,沒有提供任何新功能。
以上是箭頭函數可以用作 ES6 物件方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!