Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: shallow copy, spread operator, Object.assign, slice, JavaScript

Назовите все способы сделать неглубокую копию объекта.

Вопрос проверяет знание методов поверхностного копирования объектов в JavaScript и понимание их различий.

Короткий ответ

Неглубокая копия объекта копирует только ссылки на вложенные объекты, а не сами объекты. Основные способы: оператор spread ({...obj}), Object.assign({}, obj), Array.prototype.slice() для массивов, Array.from() и concat(). Все эти методы создают новый объект, но вложенные структуры остаются общими.

Длинный ответ

Что такое неглубокая копия?

Неглубокая (поверхностная) копия создает новый объект, который содержит копии всех свойств первого уровня исходного объекта. Если свойство является примитивом, копируется его значение. Если свойство — объект или массив, копируется только ссылка на него, а не сам вложенный объект. Это означает, что изменения во вложенных структурах затронут и оригинал, и копию.

Основные способы создания неглубокой копии

  • Оператор spread (...): самый современный и читаемый способ. Пример:
    const original = { a: 1, b: { c: 2 } };
    const copy = { ...original };
  • Object.assign(): метод, который копирует свойства из одного или нескольких исходных объектов в целевой. Пример:
    const copy = Object.assign({}, original);
  • Array.prototype.slice(): для массивов создает новый массив, содержащий элементы оригинала. Пример:
    const arr = [1, 2, { a: 3 }];
    const copy = arr.slice();
  • Array.from(): также создает новый массив из итерируемого объекта. Пример:
    const copy = Array.from(arr);
  • concat(): метод массива, который возвращает новый массив, объединяя массивы. Пример:
    const copy = [].concat(arr);

Практический пример

const user = {
  name: 'Alice',
  address: { city: 'NYC', zip: 10001 }
};

const shallowCopy = { ...user };
shallowCopy.name = 'Bob'; // не влияет на оригинал
shallowCopy.address.city = 'LA'; // влияет на оригинал!

console.log(user.address.city); // 'LA'

Вывод

Неглубокое копирование полезно для быстрого создания копий простых структур или когда вложенные объекты не должны быть независимыми. Для полной изоляции данных используйте глубокое копирование (например, structuredClone или JSON.parse(JSON.stringify(obj))). Выбор метода зависит от контекста: spread и Object.assign — для объектов, slice и concat — для массивов.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#shallow copy

#spread operator

#Object.assign

#slice

#JavaScript

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию