Мелкая копия

Поверхностные копии дублируются как можно меньше. Неглубокая копия коллекции — это копия структуры коллекции, а не элементов. При неглубоком копировании две коллекции теперь имеют общие элементы.

Глубокая копия

Глубокие копии дублируют все. Глубокая копия коллекции – это две коллекции, в которых дублируются все элементы исходной коллекции.

Создайте объект a со свойством test со значением test1, а затем скопируйте b = a и затем измените значение test в объекте. б. Давайте посмотрим пример:

Мелкая копия

const a = 5;
const b = a;
b.test = 'test2'; //Shallow copy
console.log(a); // test 2
console.log(b); // test 2

Глубокая копия

const a = { test: 'test1' }
//you can use spread or Object.assign() method for clone an object
const b = {...a}; // or const b = Object.assign({},a);
b.test = 'test2'; // Deep copy
console.log(a); // test 1
console.log(b); // test 2

Делаем глубокие копии, не думая, что можем использовать JSON

const a = { test: 'test1' }
const b = JSON.parse(JSON.stringify(a));
b.test = 'test2';
console.log(a); // test 1
console.log(b); // test 2

С массивами

Копирование массивов так же распространено, как и копирование объектов. Вы можете использовать несколько способов глубокого копирования: оператор расширения, функции массива и вложенный массив.
Давайте рассмотрим пример ниже:

const a = [1,2,3]
let b = [...a] // Spread Operator
let b = a.map(item => item) // Array Functions
let b = a.slice(0) // Array Functions
let b = JSON.parse(JSON.stringify(a)) // Nested Array

Спасибо, что прочитали. Поделитесь своим опытом, вопросами и отзывами ниже!