在 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中文网其他相关文章!