2009-09-09 25 views

回答

17

第一密钥a将被第二'a'被覆盖。

obj.a将返回2.

如果你的键名是一个有效的JavaScript标识符或号码,JavaScript就允许你忽略引号键名。然而,在实践中,最好是训练自己始终使用引号,以避免这样的混淆,并且也是因为JSON需要它们。

1

没有任何区别。

alert([ 
    obj.a, 
    obj['a'] 
].join("\n")); // returns 2 in both cases 
7

你不能 - 它们是相同的键,并且初始化程序将创建一个具有值'2'的单个元素'a'的对象。试试这个:

var obj = {a:1,'a':2}; 

for (var i in obj) 
{ 
    alert(i + '=' + obj[i]); 
} 

你会只得到“一个响应= 2'

2

如果你不知道键 - 使用迭代

for(var k in obj) 
    alert(k + "=" + obj[k]) 

当你知道确切的关键价值。使用obj [k]

3

很明显,'a'是一个字符的字符串,其中小写字母a表示内容;但是您希望作为另一个关键字吗?如果您希望它是一个名为0的变量的值,那么花括号语法不会帮助你。与Python不同,此语法假定键是字符串,并且引号是可选的。

你不得不做这样的事情:

var a = 'givenkey' 
var obj = {} 
obj[a] = 1 
obj['a'] = 2 

这将创建一个对象等同于:

var obj = {'givenkey':1, 'a':2} 
相关问题