对象文字属性值速记与`this`不兼容

时间:2015-12-25 23:19:57

标签: 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: {} }而没有错误)。那么正确的行为是什么?

1 个答案:

答案 0 :(得分:8)

该速记属性初始化子句的语法规定使用的单个术语必须是标识符。由于this是保留字,因此它不是标识符,因此您会收到语法错误。

规范的相关部分是section 12.2.6