哈希键中的JavaScript关键字

哈希键中的JavaScript关键字,javascript,object,Javascript,Object,在基于JS的引擎中,您可以在属性键中使用不带引号的关键字,如({delete:1}),而在Rhino或其他JS引擎中,它会抛出错误,这怎么可能?正确的行为应该是什么 spaceman@spaceman-laptop:~$ rhino Rhino 1.7 release 2 2010 01 20 js> ({ delete: 1 }) js: "<stdin>", line 2: invalid property id js: ({ delete: 1 }) js

在基于JS的引擎中,您可以在属性键中使用不带引号的关键字,如
({delete:1})
,而在Rhino或其他JS引擎中,它会抛出错误,这怎么可能?正确的行为应该是什么

spaceman@spaceman-laptop:~$ rhino
Rhino 1.7 release 2 2010 01 20
js> ({ delete: 1 })        
js: "<stdin>", line 2: invalid property id
js: ({ delete: 1 })
js: .........^
js> 
spaceman@spaceman-laptop:~$ node
> ({ delete: 1})
{ delete: 1 }
spaceman@spaceman-笔记本电脑:~$rhino
Rhino 1.7版本2 2010 01 20
js>({delete:1})
js:,第2行:无效的属性id
js:({delete:1})
js:^
js>
spaceman@spaceman-笔记本电脑:~$node
>({删除:1})
{删除:1}

新功能允许将属性名称保留为保留字。一些引擎可能采用了这一新的“功能”,而另一些引擎可能仍然要求在属性名恰好是保留字时引用它们。

为了清晰起见,您可能希望避免将
删除
新建
或其他运算符作为属性名,即使较新的规范对此有所放宽,我还是发现了区别:V8明确接受的关键字tokensNote(至少)所有浏览器引擎都转向ES5行为,允许属性名成为保留字。