Какими способами можно сделать глубокую копию объекта в JavaScript? Flashcards
Какими способами можно сделать глубокую копию объекта в JavaScript?
Работа с объектами в JavaScript часто включает создание копий этих объектов. Когда мы говорим о глубоком копировании, мы имеем в виду процесс создания нового объекта, который является точной копией исходного объекта, включая все вложенные объекты и массивы.
Метод JSON.parse и JSON.stringify
Один из самых простых способов создать глубокую копию объекта - использовать функции JSON.stringify() и JSON.parse(). Этот метод работает, преобразуя исходный объект в строку JSON, а затем обратно в объект.
var originalObject = {a: 1, b: 2, c: {d: 3}};
var deepCopy = JSON.parse(JSON.stringify(originalObject));
Метод Object.assign
Функция Object.assign() также позволяет создать копию объекта, но она делает только поверхностное копирование, что означает, что вложенные объекты и массивы будут ссылаться на те же объекты, что и в исходном объекте.
var originalObject = {a: 1, b: 2, c: {d: 3}};
var shallowCopy = Object.assign({}, originalObject);
Это означает, что изменения в исходном объекте будут отражаться в его копии и наоборот. Поэтому этот метод не подходит для глубокого копирования.
Библиотека Lodash предлагает функцию _.cloneDeep(), которая создает глубокую копию объекта.
var _ = require(‘lodash’);
var originalObject = {a: 1, b: 2, c: {d: 3}};
var deepCopy = _.cloneDeep(originalObject);
Этот метод работает для большинства ситуаций, но он может быть избыточным, если вам нужно только скопировать объект и вам не нужны другие функции Lodash.