Найти в Дзене
Дзен.Framework

2.3.6 Подробнее о работе с объектами

Когда-то давно при решении этой задачи я сказал "профессор". Да-да, я понимаю, что в инете пишут, что правильный ответ - первая фигура, сочетающая в себе признаки всех других фигур. Но всё-таки настаиваю: на изображенном рисунке лишний именно профессор, потому как всё остальное - и доска, и рисунки на ней - геометрические объекты. Только профессор выбивается из общего ряда. К чему я это? Просто вспомнилось. :) В предыдущей статье рассматривали массивы и что с ними можно делать. В той же статье я говорил, что массив в JS - это тоже объект с точки зрения разработчика. Если шире посмотреть на разработку в JS, то тут вообще всё является объектами. О них и поговорим. Напомню, что объекты объявляются таким способом: var a = {alfa: 1, betta: 2, gamma: 3, delta: 4, epsilon: 5}; Итак, что же можно сделать с ним, а чего не получится? НЕ получится работать с ними как с массивами: В консоли браузера я попробовал применить методы работы с массивами. Как видно, только свойство length (размер массива
Изображение из открытых источников
Изображение из открытых источников

Когда-то давно при решении этой задачи я сказал "профессор". Да-да, я понимаю, что в инете пишут, что правильный ответ - первая фигура, сочетающая в себе признаки всех других фигур. Но всё-таки настаиваю: на изображенном рисунке лишний именно профессор, потому как всё остальное - и доска, и рисунки на ней - геометрические объекты. Только профессор выбивается из общего ряда. К чему я это? Просто вспомнилось. :)

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

Напомню, что объекты объявляются таким способом:

var a = {alfa: 1, betta: 2, gamma: 3, delta: 4, epsilon: 5};

Итак, что же можно сделать с ним, а чего не получится?

НЕ получится работать с ними как с массивами:

К слову, так в частности выглядит JS-ошибки в консоли браузера
К слову, так в частности выглядит JS-ошибки в консоли браузера

В консоли браузера я попробовал применить методы работы с массивами. Как видно, только свойство length (размер массива) вывел мне undefined. Остальные попытки привели к ошибкам, так как нет таких методов у этого объекта.

А что же у него есть? По сути, объект в JS это ассоциативный массив. А значит и работа с ним идет в режиме обращения "по ключу".

Отличие ассоциативного массива от индексного в том, что у второго ключи - это целочисленные значения. Ассоциативный массив в качестве ключа имеет строку.

При этом, работает наверное одно из немногих исключений в этом языке - привидение к нужному типу:

-3

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

-4

Обратите внимание на то, как я объявляю ключи. В случае, если первым идет число, либо ключ содержит пробел, я заключаю название ключа в кавычки. В противном случае, их можно не указывать.

Но, если у нас ключи - строки, значит они могут быть вычисляемыми. Как работать с переменными и как "склеивать" строки уже рассматривали ранее. Потому вот пример того, что можно сделать в объекте:

-5

По порядку того, что я сделал:

  1. Объявил переменную key и присвоил её строковое значение 'zeta'.
  2. При объявлении объекта я использовал конструкцию [key]: 6, где key - имя переменной. Такая конструкция в квадратных скобках позволяет минимизировать код, передавая в значение ключа содержащееся в переменной значение. Как видно, я успешно добавил свойство.
  3. Получить значение можно несколькими способами:
  • обратиться как к свойсвту объекта a.zeta
  • обратиться как к массиву, но передав не числовое значение, а имя свойства: a['zeta']
  • обратиться как к массиву, но передав в качестве свойства имя переменной, содержащей интересуеющее нас название: a[key]

Рассуждая дальше, не сложно попытаться обратиться к свойству, "собрав" его название. Причем, попытка обратиться к не существующему свойству не приводит к ошибке: тут я получаю undefined.

Но мы же помним, что почти всё в JS - объекты. Так вот, данный подход действует абсолютно везде. Для примера, я возьму описываемые ранее свойства массивов и продемонстрирую их работу с учетом рассматриваемого в этой статье.

-6

На скриншоте я продемонстрировал работу со свойствами массива через другой массив (слева) и через объект (справа), у которого свойства содержат нужные нам имена свойств массива.

Старайтесь не использовать конструкций слева: это достаточно тяжело не только для восприятия впоследствии, но и для написания кода. Слишком большой риск ошибиться с числом (индексом нужного элемента).

Что нужно вынести из понимания работы с объектами? К ним вы можете обращаться всегда и везде, а также оперировать их свойствами совершенно произвольно на свое усмотрение.

Все статьи попадают в "Оглавление канала". Не пропускаем новости!

-7