我正在尝试使用"for"作为对象属性名称.它似乎在IE7,IE8,Firefox,Chrome和Opera中运行良好,但显然不在Safari中.
我的理解是ECMAScript 5允许它(如在哈希键中的JavaScript关键字中所讨论的).
我可以获得支持/不支持此功能的浏览器的确定列表吗?
编辑:实际上,CoffeeScript的保留字属性名称的自动字符串化使我相信它的工作原理.在正确地重新测试之后它似乎无法在任何地方工作,所以现在的问题是:是否有任何浏览器允许它按照ECMAScript 5规范?
Ale*_*ban 22
这里有一个表格显示了对ECMAScript 5功能的浏览器支持:http://kangax.github.com/es5-compat-table/
保留字可用作IE9,Firefox 3.5+和Chrome 7 +,Safari 5.1+中的属性名称.
Ale*_*yne 14
您可以使用这些单词,但仅作为字符串而不是速记属性.
foo['class']; // cool
foo.class; // not cool
Run Code Online (Sandbox Code Playgroud)
但这是您要求的实际列表.这些都不能通过属性点语法使用. https://web.archive.org/web/20140902235313/http://javascript.about.com/library/blreserved.htm
此外,只有略微切向,CoffeeScript会注意到这一点并自动为您进行字符串化. http://jashkenas.github.com/coffee-script/#literals
输入:
$('.account').attr class: 'active'
log object.class
Run Code Online (Sandbox Code Playgroud)
JS Ouptput:
$('.account').attr({
"class": 'active'
});
log(object["class"]);
Run Code Online (Sandbox Code Playgroud)
我碰巧认为这很不错.
小智 5
也许问题不仅仅在于保留字是否可以用作对象的属性名称,而是可以。似乎真正的问题是它们是否可以裸露使用(即不用穿引号)。裸使用的保留字是从ES5起支持,但并非所有的翻译支持ES5还没有的功能。如前所述,这里有一张好桌子...
http://kangax.github.io/es5-compat-table/#Reserved%20words%20as%20property%20names
如果您只是在NodeJS中进行一些编码,则不必担心此类问题。如果您关心代码在各种环境下的可移植性(而不使用像CoffeeScript这样的语言编译为JavaScript),那么您的代码应引用保留字...
定义...
var foo = {'for':'this works'};
Run Code Online (Sandbox Code Playgroud)
正在存取...
foo ['for'];
Run Code Online (Sandbox Code Playgroud)