2009-09-09 8 views

Odpowiedz

17

pierwszego klucza a zostanie zastąpiony przez drugi 'a'.

obj.a powróci 2.

Jeśli klucz nazwa jest poprawnym identyfikatorem JavaScript lub liczbą, JavaScript będzie można pominąć cytaty w kluczowych nazwisk. W praktyce jednak lepiej jest szkolić się, aby zawsze używać cytatów, aby uniknąć takich nieporozumień, a także dlatego, że JSON ich wymaga.

1

Nie ma żadnej różnicy.

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

Nie można - są to te same klucze, a inicjator utworzy obiekt z pojedynczym elementem "a" o wartości "2". Spróbuj tego:

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

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

A ty po prostu „a = 2' w odpowiedzi

2

Jeśli nie wiesz o klucz - użyj iteracja

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

Jeśli znasz dokładną wartość klucza. użyj obj [k]

3

oczywiście, 'a' jest ciągiem jednoliterowym z małą literą a jako treścią, ale czego oczekujesz od drugiego klawisza? jeśli chcesz, aby była to wartość zmiennej o nazwie a, wtedy składnia nawiasów klamrowych nie pomoże. W przeciwieństwie do Pythona, ta składnia zakłada, że ​​klucze są łańcuchami, a cytaty są opcjonalne.

Trzeba by zrobić coś takiego:

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

byłoby utworzyć obiekt odpowiadający:

var obj = {'givenkey':1, 'a':2} 
Powiązane problemy