Журнал

Копирование объектов и ссылки в JS

2.08.2023

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

let obj1 = { name: 'John' };
let obj2 = obj1;

obj1.name = 'Alice';

console.log(obj1.name); // Alice
console.log(obj2.name); // Alice


Чтобы создать копию объекта, а не ссылку, можно использовать различные подходы. Один из них — это использование оператора расширения (spread operator):

let obj1 = { name: 'John' };
let obj2 = { ...obj1 };

obj1.name = 'Alice';

console.log(obj1.name); // Alice
console.log(obj2.name); // John


Другой способ — использовать метод Object.assign():

let obj1 = { name: 'John' };
let obj2 = Object.assign({}, obj1);

obj1.name = 'Alice';

console.log(obj1.name); // Alice
console.log(obj2.name); // John

В обоих случаях мы создаем копию объекта obj1, а не ссылку на него.

Похожие статьи:

СТАРТ 23 октября 2023

Привет!
Я бот школы DevHouse.
Хочешь в IT? Я знаю как.
Preloader