Подтвердить что ты не робот

Javascript Object - ключ, начинающийся с номера, разрешен?

Разрешено ли это?

myObj = {};
myObj['4a56546s6d']

Или ключ должен начинаться с буквы типа:

myObj = {};
myObj['x4a56546s6d']

Можно ли смешивать оба типа:

myObj = {};
myObj['x4a56546s6d']
myObj['4a56546s6d']

Я прошу, потому что somethings (например, ID в HTML) должны начинаться с буквы. В настоящий момент у меня есть третья версия, и FireBug отмечает клавиши (начиная с цифры) синим цветом.

4b9b3361

Ответ 1

Вы можете использовать любую клавишу, если вы используете [string] для доступа к ключу, даже к ключу с пробелом. Все они действительны:

myObj['key with space']
myObj['12345']

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

Ответ 2

Точечным оператором вы можете получить доступ к значениям из ключей, которые не содержат пробелов или специальных символов, слова, начинающиеся с номера (т.е. те, которые не могут использоваться, например, имена переменных), в противном случае вы можете получить любое выражение для они как ключи в ассоциативном массиве.

Вы можете использовать как ключ, как все, что хотите, но помните, что ключ будет строковым представлением того, что вы ввели. Разъяснение - будет вызвано toString().

Облик:

 var myObj = {};

 myObj[ 3 ] = "key is 3";
 alert( myObj[ "3" ] ); //alerts "key is 3" because (3).toString() is "3"
 //but an error will thrown  when accessing  by myObj.3

 myObj[ {} ] = "key is {}" 
 alert( myObj["[object Object]"] ) // alerts "key is {}" because ({}).toString() is "[object Object]"

Вы можете переопределить метод toString(), например:

Object.prototype.toString = function(){ return "object"}

a = {};
a[ {} ] = "whatever";
alert( a["object"] ); // alerts "whatever" because as now toString() returns "object" from each created object

Ответ 3

Смотрите эту страницу: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Variables

Идентификатор JavaScript должен начинаться с буквы, подчеркивания (_) или знака доллара ($); последующие символы также могут быть цифрами (0-9). Поскольку JavaScript чувствителен к регистру, буквы включают символы "A" - "Z" (верхний регистр) и символы "a" - "z" (строчные буквы).

Вы можете использовать его таким образом, но вы не сможете получить доступ к данным с помощью myObj.4a56546s6d, потому что запуск идентификатора с номером не разрешен.

Ответ 4

Если ваш ключ (имя свойства) является строковым литералом, он совершенно корректен, чтобы иметь цифру в качестве ее первого символа.

См. ответы на этот вопрос для получения дополнительной информации о действительных ключах в JS.