了解Javascript对象初始化密钥

问题描述:

有以下任何区别?:了解Javascript对象初始化密钥

var object1= { 
    a: 0, 
    b: 1, 
    c: 2 
}; 

VS

var object2= { 
    'a': 0, 
    'b': 1, 
    'c': 2 
}; 

有在你的例子没有区别。如果你想让你的房产名称成为一个数字或者有空格(这两个都是有效的,但是很奇怪),那将会有所不同。

var object3 = { 
    '123': 0, 
    'hello world' : 1 
} 

// This is valid 
alert(object3['123']); // -> 0 
alert(object3['hello world']); // -> 1 

// This is not 
alert(object3.123); // -> Syntax Error 

如果你有两分钟,你可能会觉得这个页面非常有帮助。
http://bonsaiden.github.com/JavaScript-Garden/#object.general

+0

@ jessegavin-伟大的链接,谢谢 – Yarin 2011-03-15 03:36:15

+0

是的Javascript花园太棒了!它很好地解释了事情。 – jessegavin 2011-03-15 03:37:29

+0

我不会链接到JavaScript Garden,主要是因为它没有提供完整的解释 - 我们没有着手涵盖关于主题的所有内容,只包括最奇怪的位;我打算推荐MDC,但是它们在Objects上的页面严重过时(JavaScript 1.0?认真?),所以我想现在会这样做) – 2011-03-15 04:15:00

没有区别。两种语法都是正确的

这两者都是平等的,因为在javascript中,对象attrs。可以是字符串或纯文本。

jessegavin的回答已经解释了您询问的所有内容,但让我补充一件您未曾问到但可能需要知道的事情。

所有这些都是有效的JavaScript对象常量:

{ a: 0, b: 1, c: 2 } 
{ 'a': 0, 'b': 1, 'c': 2 } 
{ "a": 0, "b": 1, "c": 2 } 

,但只有最后一个是有效的JSON。在JSON中没有正确引用键可能是程序生成无效JSON的主要原因,无效的JSON似乎是人们使用AJAX时遇到的主要问题。

不完全是你的问题的答案,但它仍然是相关的,并可能在未来为你节省一些麻烦。

+0

@ rsp-感谢那些有价值的提示 – Yarin 2011-03-15 04:20:08