Перейти к содержимому

Объекты JavaScript

Введение в объекты JavaScript

В JavaScript объекты являются фундаментальными элементами, которые помогают организовывать и хранить данные. Представьте объект JavaScript как специальную коробку, где можно хранить различные предметы. Каждый предмет внутри этой коробки хранится в небольшом отсеке с подписью (мы называем это именем свойства), а сам предмет — это значение. Например, если у нас есть коробка, представляющая книгу, в ней могут быть отсеки с подписями «title» (название), «author» (автор) и «number of pages» (количество страниц), и каждый отсек будет содержать соответствующую информацию о книге.

Создание объектов

Использование литералов объектов

Это простой метод, при котором вы напрямую определяете объект и его свойства, используя фигурные скобки {}:


Output appears here after Run.

В этом примере user — это объект с двумя свойствами: name и age. Вы сразу видите, что содержит объект, что делает этот метод очень наглядным и простым в использовании.

Использование синтаксиса new Object()

Альтернативно вы можете начать с пустого объекта, а затем добавлять свойства по одному:


Output appears here after Run.

Этот метод предполагает сначала создание пустого объекта (user), а затем добавление свойств (name и age). Он полезен, когда свойства объекта зависят от условной логики или определяются во время выполнения программы.

Почему объекты важны?

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

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

Output appears here after Run.

Этот объект книги хранит всю связанную информацию о книге аккуратно организованной в одной переменной.

  1. Переиспользование: Как только вы создали объект, вы можете использовать его в разных частях кода. Это упрощает управление общими данными и функциональностью.

Output appears here after Run.

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

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

Output appears here after Run.
  1. Функциональность: Объекты также могут содержать функции. Эти функции (известные как методы) могут выполнять действия, используя данные, хранящиеся в объекте.

Output appears here after Run.

Объект person имеет метод greeting, который использует собственные данные для формирования приветствия. Вас может заинтересовать ключевое слово this в этом примере, дополнительную информацию о нём вы найдёте в нашей статье о ключевом слове this в JavaScript.

  1. Прототипы: У каждого объекта JavaScript есть прототип. Прототип — это объект-шаблон, от которого объект наследует методы и свойства. Это позволяет создавать мощные модели наследования.

Output appears here after Run.

Здесь dog наследуется от animal, поэтому он имеет доступ к свойству isAlive, определённому в animal, а также к собственному методу bark.

Доступ к свойствам и их изменение

Объекты позволяют обращаться к их свойствам и изменять их с помощью точечной нотации или нотации со скобками.

Доступ к свойствам


Output appears here after Run.

user.name обращается к свойству name с помощью точечной нотации, что просто и легко читается. user["age"] использует нотацию со скобками, что удобно, когда имя свойства хранится в переменной или не является допустимым идентификатором.

Вы также можете получить все ключи или значения объекта с помощью Object.keys() и Object.values():


Output appears here after Run.

Эти методы полезны для перебора свойств объекта или преобразования их в массивы.

Изменение свойств

Вы также можете изменять свойства объекта или добавлять новые:


Output appears here after Run.

В примере показано добавление нового булевого свойства (isAdmin), изменение значения существующего свойства (name) и удаление свойства (age). Это демонстрирует изменяемую природу объектов JavaScript.

Let vs Const с объектами

Let


Output appears here after Run.

Использование let позволяет переназначить объект на новый. Эта гибкость полезна, когда необходимо заменить весь объект.

Const


Output appears here after Run.

С const вы можете изменять свойства объекта, но не можете присвоить переменной новый объект. Это гарантирует, что ссылка на объект останется неизменной.

Деструктуризация объектов и оператор rest

Деструктуризация

Деструктуризация позволяет распаковать свойства объекта в отдельные переменные:


Output appears here after Run.

Этот синтаксис извлекает свойства firstName, lastName и age из объекта person в отдельные переменные, упрощая доступ к ним.

Оператор rest

Оператор rest (...) используется для сбора оставшихся свойств, которые не были распакованы:


Output appears here after Run.

После извлечения age оператор rest собирает оставшиеся свойства в новый объект nameDetails, который включает только firstName и lastName.

Расширенные атрибуты и методы свойств

Геттеры и сеттеры

Геттеры и сеттеры — это функции, которые управляют тем, как вы получаете и устанавливаете свойства объекта:


Output appears here after Run.

Свойство fullName управляется геттером и сеттером. Геттер возвращает полное имя, объединяя firstName и lastName. Сеттер принимает полное имя, разбивает его на две части и присваивает их firstName и lastName соответственно.

Заключение

Объекты JavaScript обеспечивают структурированный, эффективный и мощный способ управления и манипулирования данными, что необходимо для создания интерактивных и динамичных веб-приложений. Понимание того, как эффективно использовать объекты, критически важно для каждого, кто стремится продвинуть свои навыки в JavaScript.

Практика

Какие существуют способы создания объекта в JavaScript?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.