Название свойства объекта из цифр
Приветствую Вас всех, ребята.
На стороне сервера я кодирую индексный массив при помощи функции PHP json_encode() и когда браузер получает ответ от сервера, то при помощи JSON.parse() я преобразовываю JSON в объект JS. Вся фишка в том, что название свойств у объекта состоит только из цифр, ведь на стороне сервера я преобразовал индексный массив в JSON. Это вообще нормально? Допустима ли такая запись в JS: obj = { 777:"string1", 888:"string2", lastProperty:"string3" } И как обращаться к такой записи? Вот так: obj[777] или вот так obj["777"] ? Но меня больше всего интересует, можно ли задавать числовые свойства объекту? И везде ли это будет работать? |
Цитата:
obj = { 777:"string1", 888:"string2", lastProperty:"string3" }; alert(obj[777] ); alert(obj["777"] ); Работают оба варианта... ;) |
Цитата:
|
ksa,
Я знаю что работают оба варианта, но я проверял только в современных браузерах! Я никогда и нигде не видел, чтобы свойство объекта состояли только из цифр, и боюсь, что это ненормально |
У объектов в JS ключи всегда строковые, если там стоит число, то оно преобразуется к строке.
А вообще странно, вроде json_encode должна индексный массив в корректный JSON передать и JSON.parse из него получит так же обычный массив, а не объект. |
jsnb,
Дело в том, что ключи массива отсчитываются не от ноля, у них постоянно разные цифровые значения и при отдаче сервером ответа эти самые ключи должны служить свойством, но эти ключи числовые. И следовательно вопрос: Могут ли эти ключи служить названием свойства объекта в JS, корректно ли это будет или это костыль? И как лучше записать такие свойства в самом объекте? В кавычках или просто числом? |
Цитата:
|
jsnb,
Цитата:
То-бишь, вне зависимости от браузера, даже IE6 будет преобразовывать такие свойства? |
Цитата:
|
ksa,
У меня нет такой версии IE а кривые сборки ставить не хочется |
Часовой пояс GMT +3, время: 12:24. |