Youtube使用“默认”作为对象属性的名称

问题描述

|| 我一直在使用Youtube json API进行新的混搭。 在响应的某处,您可以找到以下内容
{
\"player\":
  {
  \"default\":\"http://www.youtube.com/watch?v\\u003deH5Iysm417U\"
  }
}
我始终学会了不要将ECMAScript标准的保留字部分中提到的任何字词用作标识符。据我所知,不允许使用名称“ default \”作为属性名称。为什么YouTube要这样做?
player.default
老实说,以上代码在浏览器中可以正常工作。但是我必须将其更改为下面的代码,以便在使用Google Closure编译器时没有编译错误
player[\"default\"]
只是感觉不对。 这里最重要的问题是,我能做些什么吗?     

解决方法

        
Identifier
与ѭ4not不同。 当没有引号声明时,4ѭ不必由保留字组成。当用引号声明时,则所有字符串均有效,即使是
\"  \"
。 以下是有效作品的列表:
 PropertyName :    
     Identifier    
     StringLiteral    
     NumericLiteral
http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf,11.1.15 您无法更改来自Youtube的响应,尽管
player.default
没什么问题,但如果要避免在闭包编译器中发生此错误,则只需要使用[]访问器即可。 但是,实际上,这是编译器的错误,而不是JavaScript的错误。     ,        由于跨浏览器兼容性问题,编译器可能会对此进行标记。 我最近在创建使用代码而不是解析文本的模板库时用
default
extends
碰到了同一件事。代码工作得很好,但是Closure Compiler抱怨这些关键字用作属性时...然后我在IE中尝试了它:
>>> var o = {default: \'test\'}
SyntaxError: Expected identifier,string or number
>>> var o = {\'default\': \'test\'}
>>> o.default
SyntaxError: Expected identifier