Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2015, 09:01
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

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

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

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


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

Но меня больше всего интересует, можно ли задавать числовые свойства объекту? И везде ли это будет работать?
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2015, 09:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,596

Сообщение от zhurchik Посмотреть сообщение
Допустима ли такая запись в 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"] );

Работают оба варианта...
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2015, 09:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,596

Сообщение от zhurchik
я преобразовал индексный массив в JSON. Это вообще нормально?
Это норма. (с)
Ответить с цитированием
  #4 (permalink)  
Старый 16.03.2015, 09:32
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

ksa,
Я знаю что работают оба варианта, но я проверял только в современных браузерах!
Я никогда и нигде не видел, чтобы свойство объекта состояли только из цифр, и боюсь, что это ненормально
Ответить с цитированием
  #5 (permalink)  
Старый 16.03.2015, 10:03
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

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

Последний раз редактировалось jsnb, 16.03.2015 в 10:14.
Ответить с цитированием
  #6 (permalink)  
Старый 16.03.2015, 10:34
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

jsnb,
Дело в том, что ключи массива отсчитываются не от ноля, у них постоянно разные цифровые значения и при отдаче сервером ответа эти самые ключи должны служить свойством, но эти ключи числовые.
И следовательно вопрос:
Могут ли эти ключи служить названием свойства объекта в JS, корректно ли это будет или это костыль? И как лучше записать такие свойства в самом объекте? В кавычках или просто числом?
Ответить с цитированием
  #7 (permalink)  
Старый 16.03.2015, 10:49
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от zhurchik
Могут ли эти ключи служить названием свойства объекта в JS, корректно ли это будет или это костыль? И как лучше записать такие свойства в самом объекте? В кавычках или просто числом?
Естественно могут, почему нет. Я уже сказал, пофигу как ты их запишешь числом или строкой, в конечном итоге они всё равно будут приведены к строке в соответствии с правилами приведения типов JS. Правда полагаться на порядок свойств в объекте при переборе всё-таки думаю не стоит.
Ответить с цитированием
  #8 (permalink)  
Старый 16.03.2015, 11:01
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

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

То-бишь, вне зависимости от браузера, даже IE6 будет преобразовывать такие свойства?
Ответить с цитированием
  #9 (permalink)  
Старый 16.03.2015, 11:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,596

Сообщение от zhurchik
даже IE6 будет преобразовывать такие свойства?
Просто попробуй и увидишь.
Ответить с цитированием
  #10 (permalink)  
Старый 16.03.2015, 11:18
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Название вызвавшего свойства max0n Общие вопросы Javascript 16 10.10.2014 19:16
Обратиться к свойству объекта через его название ruzik Общие вопросы Javascript 2 11.04.2014 22:58
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 19:39
Как объяснить JS, что некая строка это название имеющегося объекта? DimonCry Общие вопросы Javascript 15 07.01.2011 23:43
Как при чтении или записи свойства объекта вызывать функцию danik.js Общие вопросы Javascript 3 16.09.2010 17:57