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

Какая проблема сравнения объекта если он скопирован с помощью JSON.stringify

При копировании объекта через JSON.stringify и последующем JSON.parse теряются:

  1. Методы объекта (функции)
  2. Специальные типы вроде Date, RegExp, Map, Set (превращаются в строки)
  3. undefined и Symbol пропадают
  4. Циклические ссылки вызовут ошибку

Пример:

javascript
const obj = {
  date: new Date(),
  fn: () => console.log('test'),
  undef: undefined
};

const copy = JSON.parse(JSON.stringify(obj));

console.log(copy.date); // строка вместо Date
console.log(copy.fn); // undefined
console.log(copy.undef); // undefined (пропало)

Для глубокого копирования лучше использовать structuredClone() (если не нужны методы) или библиотеки типа Lodash _.cloneDeep().

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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