Встречается на собеседованиях • сегодня
Всегда ли можно клонировать объект через 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`).
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы