Когда в JavaScript происходит присваивание объекта одной переменной другой переменной, на самом деле передается не сам объект, а ссылка на объект в памяти. Это означает, что обе переменные указывают на один и тот же объект в памяти, и любые изменения, сделанные с помощью одной переменной, будут отражены в другой переменной, так как они на самом деле ссылаются на один и тот же объект.
Пример:
let obj1 = { key: 'value' }; let obj2 = obj1; console.log(obj1); // { key: 'value' } console.log(obj2); // { key: 'value' } obj2.key = 'new value'; console.log(obj1); // { key: 'new value' } console.log(obj2); // { key: 'new value' }
В приведенном выше примере obj1
и obj2
указывают на один и тот же объект в памяти. Поэтому изменение свойства key
через obj2
отразится и на obj1
, так как обе переменные по-сути указывают на один и тот же объект.
Если вы хотите создать независимую копию объекта, вам нужно использовать различные методы для клонирования объекта, такие как Object.assign()
, оператор spread ...
или метод JSON.parse(JSON.stringify(obj))
.
Например:
let obj1 = { key: 'value' }; let obj2 = { ...obj1 }; obj2.key = 'new value'; console.log(obj1); // { key: 'value' } console.log(obj2); // { key: 'new value' }
Таким образом, присваивание объекта в JavaScript связано с передачей ссылки на объект в памяти, а не копированием всего объекта целиком.