请参考下面的代码,当我“取消注释”任何一个被注释的行时,会导致错误(在IE中),错误为“预期‘:’”。那么我的结论是正确的吗?不能将对象值作为对象键提供给字符串文字,这是一个解释器/解析问题吗?相比Crockford的“好部分”,这是否是JavaScript中可怕(或至少是“糟糕”的)“部分”的候选?
<script>
var keys = {'ONE': 'one'};
//causes error:
//var obj1 = {keys.ONE: 'value1'};
//var obj1 = {keys['ONE']: 'value1'};
//works
var obj1 = {};
obj1[keys.ONE] = 'value1';
//also works
var key_one = keys.ONE;
var obj2 = {key_one: 'value1'};
</script>
var key_one = keys.ONE; var obj2 = {key_one: 'value1'};
并不像你期望的那样工作。obj2
的属性将是key_one
而不是key.ONE
的值,因此也不是one
。 - RoToRa{somevar: 1, methodname:function(){ /*stuff*/ } }
,我想有人不喜欢将他的方法名用引号括起来;) - naugtur