Встречается на собеседованиях • сегодня

Всегда ли можно клонировать объект через spread оператор

Нет, spread оператор (...) выполняет поверхностное (shallow) копирование. Он не клонирует вложенные объекты или массивы, а копирует только ссылки на них. Для глубокого клонирования нужны другие методы.

Пример:

javascript
const obj = { a: 1, nested: { b: 2 } };
const shallowCopy = { ...obj };

shallowCopy.nested.b = 100;
console.log(obj.nested.b); // 100 (изменился исходный объект)

text

**Когда spread не подходит:**
- Если объект содержит вложенные структуры.
- Если объект имеет методы, символы или свойства с дескрипторами (например, `enumerable: false`).
- Для копирования экземпляров классов (теряется прототип).

**Альтернативы:**
- `JSON.parse(JSON.stringify(obj))` (но теряет функции, `undefined`, цикличные ссылки).
- Рекурсивное копирование.
- Библиотеки типа Lodash (`_.cloneDeep`).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы