Как присвоить объект так, чтобы это не была передача по ссылке (как скопировать объект — поверхностно и глубоко)?

Чтобы скопировать объект и получить новый экземпляр, а не ссылку на исходный объект, можно использовать несколько подходов в JavaScript:

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

Что ответить на собеседовании

Чтобы скопировать объект и получить новый экземпляр, а не ссылку на исходный объект, можно использовать несколько подходов в JavaScript:

Подробный разбор

Ответ с пояснениями

Чтобы скопировать объект и получить новый экземпляр, а не ссылку на исходный объект, можно использовать несколько подходов в JavaScript:

  1. Поверхностное копирование — копирует только первый уровень свойств:
const original = { a: 1, b: { c: 2 } };
const copy = { ...original };
// или
const copy2 = Object.assign({}, original);

Однако вложенные объекты будут ссылками на те же объекты.

  1. Глубокое копирование — создает полностью независимую копию, включая вложенные объекты:
  • Через сериализацию:
const deepCopy = JSON.parse(JSON.stringify(original));

Минусы: не копирует функции, даты, undefined и другие специальные типы.

  • С помощью специализированных библиотек, например lodash:
import _ from 'lodash';
const deepCopy = _.cloneDeep(original);

Таким образом, для полного копирования объекта лучше использовать глубокое копирование, чтобы избежать общих ссылок на вложенные объекты.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку