Ссылки на объекты в Javascript

#javascript #object

#javascript #объект

Вопрос:

Когда у вас есть многоуровневый объект, подобный объекту json, который, скажем, имеет 3 уровня

 i = {'id':1{'name':'austin', 'lives':'college'{'name':'eckerd', 'major':'compsci'}}}
  

Чтобы ссылаться на объект, лучше ли ссылаться на него следующим образом

 for (x in i)
    i[x]['lives']['name']
//or
    i[x].lives.name
  

Я думаю, это проясняет мою идею. В значительной степени используются ассоциативные массивы или метод ‘dot’ и почему?

Ответ №1:

i[x].lives.name эквивалентно i[x]["lives"]["name"] .

i[x][lives][name] означает, что у вас есть вызываемые переменные, lives на name которые вы хотите ссылаться:

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

Комментарии:

1. ошибка, извините, в вопросе они должны быть в кавычках

2. На самом деле это просто то, что вы предпочитаете. Два синтаксических представления ссылаются на одни и те же объекты совершенно одинаковым образом. Выбранный вами метод не окажет никакого влияния на ваш код, кроме того, как он выглядит. Лично я использую . синтаксис для отделения стандартных «объектов» от того, что я считаю «массивами», хотя для JS это в точности одно и то же.

3. @austinbv выглядит неплохо. Думаю, тогда актуальна только последняя строка этого ответа. 🙂

4. Я испытываю соблазн отклонить это, поскольку к ключам JSON (которые являются строками) следует обращаться соответственно только как к строкам, а не к параметрам объекта.

Ответ №2:

«Значения могут быть извлечены из объекта путем обертывания строкового выражения в суффикс [ ]. Если строковое выражение является строковым литералом, и если это законное имя JavaScript, а не зарезервированное слово, то . вместо этого можно использовать нотацию. The . предпочтительна нотация, поскольку она более компактна и лучше читается.»

  • Крокфорд Д. (2008), JavaScript: хорошие стороны. (стр. 21). Севастополь, Калифорния, США: О’Рейли.