javascript - 对象文字属性值简写与 `this` 不兼容

标签 javascript ecmascript-6

在 JavaScript 中可以这样做:

var a = {this: this}

但是使用 ES6 属性简写我得到 SyntaxError:

var b = {this}; // SyntaxError: this is a reserved identifier

这不是一个真正的用例,但我只是想知道这两者之间有什么区别。我认为它应该做同样的事情(要么创建一个新对象,要么抛出错误)。

更新:

我在 Firefox 42.0 中运行这个例子。但是它在 babel-node 中工作(它创建对象 { this: {} } 没有错误)。那么正确的行为是什么?

最佳答案

该速记属性初始化器子句的语法规定所使用的单个术语必须是标识符。因为 this 是保留字,它不是标识符,所以会出现语法错误。

规范的相关部分是 section 12.2.6 .

关于javascript - 对象文字属性值简写与 `this` 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34467262/

相关文章:

javascript - 以 ES6 风格重构串联

javascript - 按值对嵌套数组进行分组并求平均值

javascript - 创建简单的角色游戏

javascript - 列表 : {[id]:array1} and list: {. ..state.list、[id] :array1} in ReactJs? 之间有什么区别

javascript - 将另一个类作为类的静态属性

javascript - 有没有更聪明的方法来替换这个 CSS 列 JS?

javascript - 解构值并将其重命名为字符串键

javascript - 如何从客户端断开并重新连接 socket.io?

javascript - 无法阻止引荐垃圾邮件

javascript - 文本悬停超链接