Youtube使用"default"作为对象属性的名称

chr*_*ngs 3 javascript youtube json youtube-api

我一直在使用Youtube json api进行新的混搭.
响应的某处,您可以找到以下内容:

{
"player":
  {
  "default":"http://www.youtube.com/watch?v\u003deH5Iysm417U"
  }
}
Run Code Online (Sandbox Code Playgroud)

我一直学会不使用ECMAScript标准的保留字部分中提到的任何词作为标识符.所以据我所知,不允许使用名称"default"作为属性名称.为什么Youtube这样做?

player.default
Run Code Online (Sandbox Code Playgroud)

说实话,上面的代码在浏览器中工作正常.但是我不得不将其更改为下面的代码,以便在使用Google闭包编译器时没有编译错误.

player["default"]
Run Code Online (Sandbox Code Playgroud)

这只是感觉不对.
这里最重要的问题是,我可以做些什么吗?

Sea*_*sey 6

一个Identifier与a不一样PropertyName.

PropertyName只需不是 没有引号声明时包括保留字.当用引号声明时,所有字符串都是有效的,甚至是有效的" ".

以下是有效作品列表:

 PropertyName :    
     Identifier    
     StringLiteral    
     NumericLiteral
Run Code Online (Sandbox Code Playgroud)

http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf,11.1.15

你不能改变Youtube的响应,尽管没有任何问题player.default,如果你想在闭包编译器中避免这个错误,你只需要使用[]访问器.

但实际上,这是编译器的错误,而不是javascript.