Архив метки: обьекты

Копирование объектов в Javascript

В Javascript лично мне немножко не привычное поведение при присвоении одного объекта другому. Например:

otvet_4={        
        start_button : 1,
        concurent : 22
}

qwest=otvet_4;
qwest.start_button=10;

console.log(qwest.start_button);
console.log(otvet_4.start_button);

Выведет на экран две цифры 10. Т.е. меняется и первоначальный обьект?? Фактически значит знаком =, создается не копия, а ссылка на объект.

Одним из методов позволяющих «истинно копировать», является применение например такого трюка:

otvet_4={
 start_button : 1,
 concurent : 22
}

qwest=JSON.parse(JSON.stringify(otvet_4));
qwest.start_button=10;

console.log(qwest.start_button);
console.log(otvet_4.start_button);

В этом случае в консоль выведет 1 и 10, что и ожидали.. Так-же можно воспользоваться функцией Object.assign… Но тут есть тоже подводные камни. Хороший материал по копированию объектов в Javascript тут