Копирование объектов в Javascript
В Javascript лично мне немножко не привычное поведение при присвоении одного объекта другому. Например:
1 2 3 4 5 6 7 8 9 10 |
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. Т.е. меняется и первоначальный обьект?? Фактически значит знаком =, создается не копия, а ссылка на объект.
Одним из методов позволяющих «истинно копировать», является применение например такого трюка:
1 2 3 4 5 6 7 8 9 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 тут