Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Название свойства объекта из цифр (https://javascript.ru/forum/misc/54400-nazvanie-svojjstva-obekta-iz-cifr.html)

zhurchik 16.03.2015 09:01

Название свойства объекта из цифр
 
Приветствую Вас всех, ребята.

На стороне сервера я кодирую индексный массив при помощи функции PHP json_encode() и когда браузер получает ответ от сервера, то при помощи JSON.parse() я преобразовываю JSON в объект JS.
Вся фишка в том, что название свойств у объекта состоит только из цифр, ведь на стороне сервера я преобразовал индексный массив в JSON. Это вообще нормально?

Допустима ли такая запись в JS:
obj = {
777:"string1",
888:"string2",
lastProperty:"string3"
}


И как обращаться к такой записи? Вот так:
obj[777] или вот так obj["777"] ?

Но меня больше всего интересует, можно ли задавать числовые свойства объекту? И везде ли это будет работать?

ksa 16.03.2015 09:21

Цитата:

Сообщение от zhurchik (Сообщение 361435)
Допустима ли такая запись в 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 16.03.2015 09:22

Цитата:

Сообщение от zhurchik
я преобразовал индексный массив в JSON. Это вообще нормально?

Это норма. (с) :D

zhurchik 16.03.2015 09:32

ksa,
Я знаю что работают оба варианта, но я проверял только в современных браузерах!
Я никогда и нигде не видел, чтобы свойство объекта состояли только из цифр, и боюсь, что это ненормально

jsnb 16.03.2015 10:03

У объектов в JS ключи всегда строковые, если там стоит число, то оно преобразуется к строке.
А вообще странно, вроде json_encode должна индексный массив в корректный JSON передать и JSON.parse из него получит так же обычный массив, а не объект.

zhurchik 16.03.2015 10:34

jsnb,
Дело в том, что ключи массива отсчитываются не от ноля, у них постоянно разные цифровые значения и при отдаче сервером ответа эти самые ключи должны служить свойством, но эти ключи числовые.
И следовательно вопрос:
Могут ли эти ключи служить названием свойства объекта в JS, корректно ли это будет или это костыль? И как лучше записать такие свойства в самом объекте? В кавычках или просто числом?

jsnb 16.03.2015 10:49

Цитата:

Сообщение от zhurchik
Могут ли эти ключи служить названием свойства объекта в JS, корректно ли это будет или это костыль? И как лучше записать такие свойства в самом объекте? В кавычках или просто числом?

Естественно могут, почему нет. Я уже сказал, пофигу как ты их запишешь числом или строкой, в конечном итоге они всё равно будут приведены к строке в соответствии с правилами приведения типов JS. Правда полагаться на порядок свойств в объекте при переборе всё-таки думаю не стоит.

zhurchik 16.03.2015 11:01

jsnb,
Цитата:

Сообщение от jsnb (Сообщение 361450)
Правда полагаться на порядок свойств в объекте при переборе всё-таки думаю не стоит.

Это я уже понял, поработав в хроме)

То-бишь, вне зависимости от браузера, даже IE6 будет преобразовывать такие свойства?

ksa 16.03.2015 11:03

Цитата:

Сообщение от zhurchik
даже IE6 будет преобразовывать такие свойства?

Просто попробуй и увидишь. ;)

zhurchik 16.03.2015 11:18

ksa,
У меня нет такой версии IE а кривые сборки ставить не хочется


Часовой пояс GMT +3, время: 08:42.