Перейти к основному содержимому
Модуль 3 · Урок 2 из 410/32 в курсе~10 min
Уроки модуля (2/4)

Объекты: карта ключ-значение

Объект в JS — это неупорядоченная коллекция пар ключ → значение. Ключи – это строки (или Symbol), значения – любые: числа, строки, массивы, другие объекты, функции. Это наиболее часто используемая структура данных в язык: каждая «запись» в вашем домене обычно является объектом.

JS
const utente = {
  nome: 'Anna',
  eta: 28,
  attivo: true,
  ruoli: ['admin', 'editor'],
};

Чтение свойств: точка против скобки

Есть два эквивалентных обозначения:

JS
utente.nome; // 'Anna'    (dot — the normal form)
utente['nome']; // 'Anna'    (bracket — equivalent)

// Brackets are MANDATORY when:
// 1) the key is not a valid identifier
const tag = { 'codice-fiscale': 'ABC123' };
tag['codice-fiscale']; // OK
// tag.codice-fiscale;      // syntax error

// 2) the key is computed (variable/expression)
const campo = 'eta';
utente[campo]; // 28

Свойство отсутствует возвращает undefined без ошибок:

JS
utente.telefono; // undefined

Добавление, изменение, удаление

JS
const u = { nome: 'Anna' };
u.eta = 28; // adds
u.nome = 'Anna B.'; // modifies
delete u.eta; // removes the property

delete — ключевое слово. Это окажется редкий случай использования: большая часть когда вам понадобится создать новый объект без этого ключа (мы увидим это с разбросом).

Сокращение: ключи названы как переменная.

Если имя ключа совпадает с именем переменной, дублирование можно опустить:

JS
const nome = 'Anna';
const eta = 28;

const u1 = { nome: nome, eta: eta }; // explicit form
const u2 = { nome, eta }; // shorthand, equivalent

Проверка наличия недвижимости

Три варианта в порядке предпочтения:

JS
'nome' in utente; // true   ← in operator
utente.nome !== undefined; // true   ← works almost always
Object.hasOwn(utente, 'nome'); // true   ← modern, safe

Попробуйте это

Упражнение#js.m3.l2.e1
Попыток: 0Загрузка…

Создайте объект user = { name: 'Sara', age: 22 }, затем добавьте свойство active со значением true и верните объект в качестве последнего выражения.

Загрузка редактора…
Показать подсказку

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

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#js.m3.l2.e2
Попыток: 0Загрузка…

Учитывая `product = { code: 'A1', цена: 9,9 }` и строку `key = 'price'`, верните цену, используя скобочную запись (последнее выражение должно иметь значение 9,9).

Загрузка редактора…
Показать подсказку

С помощью скобок вы можете передать переменную в качестве ключа.

Решение доступно после 3 попыток