Найти тему
Дело было вечером

Объекты JavaScript — всё, что нужно знать новичкам

Photo by Christopher Bill
Photo by Christopher Bill

Объекты же используются для хранения коллекций различных значений и более сложных сущностей. У объектов в JavaScript есть свойства: это пары «ключ: значение». Объект может быть создан с помощью фигурных скобок {…} с необязательным списком свойств:

let название_объекта = {
ключ: значение,
ключ: значение,
...
}

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

Имя свойства может состоять из нескольких слов, но тогда оно должно быть заключено в кавычки:

let user = {
name: "John",
age: 30,
"likes birds": true // имя свойства из нескольких слов должно быть в кавычках
};

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

let fruit = prompt("Какой фрукт купить?", "apple");
let bag = {
[fruit]: 5, // имя свойства будет взято из переменной fruit
};
alert( bag.apple ); // 5, если fruit="apple"

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

let user = new Object(); // синтаксис "конструктор объекта"
let user = {}; // синтаксис "литерал объекта"

К свойству объекта можно обратиться через точечную нотацию: название_объекта.свойство или записать свойство в квадратных скобках. В них нужно передать значение ключа строкой, т. е. в кавычках: название_объекта['свойство'].

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

Чтобы удалить свойство объекта используют оператор delete:

const obj = { one: 1 };
delete obj.one;

Проверить, есть ли ключ в объекте, можно оператором in. Для этого нужно указать имя ключа в кавычках, затем написать in и имя объекта, в котором ищем это свойство:

const whoIsAtHome = { // англ. who is at home, «кто есть дома?»
father: 'папа',
mother: 'мама'
};
console.log('father' in whoIsAtHome);
// true

Для перебора всех свойств объекта используется цикл for..in:

for (key in object) {
// тело цикла выполняется для каждого свойства объекта
}

Object

Object — доступный в JavaScript глобальный объект. Он создаётся, как только вы открываете браузер. У него много полезных методов.

Массив ключей объекта удобно получить, передав объект как аргумент методу Object.keys:

Object.keys({ name: 'Алан', surname: 'Кей' }); // ["name", "surname"]

Метод Object.values возвращает значения всех свойств и методов объекта, а Object.entries — все пары «ключ-значение». Есть нюанс: эти свойства не поддерживает даже последняя версия Internet Explorer.

Для копирования объектов (чтобы создать независимую копию, так как объекты копируются по ссылкам) используют метод метод Object.assign:

Object.assign(dest, [src1, src2, src3...])

  • Первый аргумент dest — целевой объект.
  • Остальные аргументы src1, ... , srcN (может быть столько, сколько нужно)) являются исходными объектами
  • Метод копирует свойства всех исходных объектов src1, ... , srcN в целевой объект dest. То есть, свойства всех перечисленных объектов, начиная со второго, копируются в первый объект.
  • Возвращает объект dest.

Пример:

let user = { name: "Иван" };
let permissions1 = { canView: true };
let permissions2 = { canEdit: true };
// копируем все свойства из permissions1 и permissions2 в user Object.assign(user, permissions1, permissions2);
// теперь user = { name: "Иван", canView: true, canEdit: true }