Javascript Object - Ключ, начинающийся с цифры, разрешен? - PullRequest
28 голосов
/ 02 января 2012

Это разрешено?

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

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

myObj = {};
myObj['x4a56546s6d']

Могу ли я смешать как:

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

Я спрашиваю это, потому что что-то (например, идентификатор в HTML) должно начинаться с буквы. У меня на данный момент третья версия и fireBug помечает клавиши (начиная с цифры) синим цветом.

Ответы [ 4 ]

53 голосов
/ 02 января 2012

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

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

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

18 голосов
/ 02 января 2012

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

Вы можете использовать в качестве ключа все, что хотите, но помните, что ключ будет строковым представлением того, что вы вставили. Уточнение - будет называться 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
7 голосов
/ 02 января 2012

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

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

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

0 голосов
/ 02 января 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...