如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。