JavaScript成员/属性如何工作?

时间:2011-02-25 00:31:02

标签: javascript

使用此语法创建的对象之间有什么区别:{ prop1: val1, prop2: val2 }和使用以下语法创建的对象:{ 'prop1': val1, 'prop2': val2 }

而且,以下代码是否有效?

var val1 = 10, val2 = 15;
var tmp1 = { prop1: val1 };
var tmp2 = { 'prop2': val2 };
alert(tmp1['prop1']); // I expect 10
alert(tmp2['prop2']); // I expect 15

P.S。:抱歉,我无法为我的问题提出更好的标题。这反映了我对JavaScript的不了解。

2 个答案:

答案 0 :(得分:4)

您的示例没有区别。如果您的任何属性名称包含空格或特殊字符,或者not a valid identifier,则 需要引号:

{ prop1 with spaces: val1, 6prop2$-^: val2 } // illegal 
{ 'prop1 with spaces': val1, '6prop2$-^': val2 } // correct

答案 1 :(得分:3)

完全没有区别,尽管字符串版本允许您使用不是有效字符的字符作为标识符。

您可以使用字符串执行此操作:

{ 'prop-1': val1, 'prop-2': val2 }

但不是标识符:

{ prop-1: val1, prop-2: val2 }

是的,该代码有效。