对象文字属性值与“this”不兼容

Object Literal Property Value Shorthand incompatible with `this`

本文关键字:this 不兼容 文字 属性 对象      更新时间:2023-09-26

在JavaScript中,可以执行以下操作:

var a = {this: this}

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

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

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

更新:

我在Firefox 42.0中运行了这个例子。然而,它在babel节点中工作(它创建对象{ this: {} }时没有出错)。那么什么是正确的行为呢?

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

规范的相关部分为第12.2.6节。