Как создать 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
191 +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 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир