2014-11-19 2 views
0

На узле nodejs создается объект a, который содержит как цифровые, так и нецифровые ключи.Может ли ключ объекта быть числовым?

С помощью синтаксиса можно получить доступ к номерам без номера.. Если значение ключа numic не может быть доступно с тем же синтаксисом.

$ node 
> a = { 2: 'val1', 3: 'val2', 4: 'val3', obj: 'val4' } 
{ '2': 'val1', 
    '3': 'val2', 
    '4': 'val3', 
    obj: 'val4' } 
> a.obj 
'val4' 
> a.'2' # cannot access the value 
... 
> a.2 
... 
... 

Почему это ограничение. Можно ли создавать объекты с числовыми клавишами?.

+1

Это просто, что синтаксический вы не можете получить доступ к цифровой собственности, говоря, 'object.1', вы должны сказать' объект [1] '. –

+0

, если у вас есть только цифровые клавиши, и они бывают в порядке, вы должны использовать массив, чтобы вы получали множество бесплатных дополнений в своей структуре данных. – dandavis

+0

JSON - ассоциативный массив. – BatScream

ответ

0

Ограничение связано с тем, что точечная нотация следует тем же правилам именования, что и обычные переменные.

Вы можете использовать квадратные скобки для доступа всех полей:

var a = {foo: 'bar', 5: 'bar2'}; 
alert(a[5]); //bar2 
alert(a['foo']); //bar 
+1

Имена объектов не являются фактически номерами. Если вы попытаетесь использовать числовое имя свойства, Javascript преобразует его в строку и использует строковое представление числа в качестве фактического имени свойства. – jfriend00

+0

yep, и именно поэтому это разрешено с помощью скобок – JohnKiller

Смежные вопросы