Как создать 2 одинаковых независимых объекта в JavaScript? Столкнулся со следующей проблемой - создаю 2 объекта. Меняю свойства в одном объекте - меняются они же в другом. Как их сделать самостоятельными, даже если основываются на одном и том же наборе исходных данных?function Item(coordinates){
this.coordinates = coordinates || false;
this.moveItemToAValueBelow = function(value){
for (var i in this.coordinates){
this.coordinates[i][1]+=value;
}
}
}
var first = new Item(data);
var second = new Item(data);
second.moveItemToAValueBelow(20);
console.log(first.coordinates);
console.log(second.coordinates);
console.log показывает одно и тоже. Как правильно создавать 2 разных объекта с одинаковыми данными?
Полный код странички представлен здесь https://github.com/valenso/pattern

21 Авг 2019 в 07:09
160 +1
0
Ответы
1

Проблема здесь заключается в том, что при создании второго объекта second, вы передаете тот же самый объект data, который используется для создания объекта first. Это означает, что оба объекта в итоге ссылаются на один и тот же общий объект data.

Чтобы создать два независимых объекта, использующих одинаковые данные, вам нужно создать копию этих данных для каждого объекта. Вот как это можно сделать:

function Item(coordinates){
this.coordinates = JSON.parse(JSON.stringify(coordinates)) || false;
this.moveItemToAValueBelow = function(value){
for (var i in this.coordinates){
this.coordinates[i][1]+=value;
}
}
}
var data = [[1, 2], [3, 4]]; // Ваши исходные данные
var first = new Item(data);
var second = new Item(data);
second.moveItemToAValueBelow(20);
console.log(first.coordinates);
console.log(second.coordinates);

В данном случае JSON.stringify используется для создания копии исходных данных, которые затем разбираются снова с помощью JSON.parse. Таким образом, когда вы изменяете свойства объекта second, они не влияют на объект first.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 706 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир