Как же всё-таки скопировать объект, чтобы он не ссылался на самого себя?
const car1 = { brand: "Toyota", model: "Camry" };
const car2 = car1;Если мы присвоим одну переменную другой, обе переменные будут указывать на один и тот же объект.
Это как если бы у нас была одна машина, и мы дали бы ключи от неё другу. Машина по-прежнему одна, но ей пользуются оба человека. Если один что-то изменит в этой машине, то другой тоже заметит это изменение.
Что же делать?
Мы можем "купить" другу точно такую же машину, и тогда они будут похожи, но разными:
const car1 = { brand: "Toyota", model: "Camry" };
const car2 = {...car1};В этом примере мы "покупаем" новую машину, создавая новый объект, и копируем в него все характеристики из первой машины (друг пошёл и заказал машину, основываясь на детальных фотографиях вашего автомобиля).
Теперь это два абсолютно разных объекта. ОДНАКО это сработает, если в объекте нет вложенных объектов. Вложенный объект - это как бардачок в машине. Продавцы в автосалоне не знают, что лежит в вашем бардачке, и они не смогут скопировать его содержимое, а просто укажут на бардачок друга (сделают ссылку) и у вас будет два одинаковых бардачка, если вы что-то заберете из него, то это пропадет и у друга.
#JavaScript #обучающийПост #Objects #clone #copy