foundation
Объектные значения
Идентичность по ссылке, наборы свойств, массивы, функции как объекты и подводные камни wrapper-объектов.
Объекты (включая массивы и функции) — ссылочные значения. При присваивании копируется ссылка, и две переменные могут указывать на одну изменяемую структуру. `{}` === `{}` равно false, потому что идентичность разная, даже если форма совпадает.
Ключи свойств — строки или symbol (в Map допустимы любые ключи). `Object.is(a, a)` проверяет идентичность ссылки. Spread и `Object.assign` делают поверхностные копии — вложенные объекты остаются общими.
const a = { nested: { count: 1 } };
const b = { ...a };
b.nested.count = 2;
console.log(a.nested.count); // 2
Выбирайте Map, когда ключи не строки/symbol или нужны надёжный size и порядок итерации без prototype pollution.
На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и производительностью или между безопасностью и удобством.
Чеклист:
- Объясните присваивание по ссылке.
- Сравните идентичность объекта с равенством формы.
- Отметьте ограничения поверхностного копирования.