Сегодня впервые столкнулся с странной (для меня) работой JS.
Мне нужно создать 2 переменные в которые помещаются одинаковый входящий объект. Первая переменная должна хранить данные для возможности восстановления. А во второй с данными происходит работа, т.е. они могут изменятся.
Дабы не запутывать вас своим кодом, смоделировал ситуацию в миниатюре:
https://jsfiddle.net/8zu8rm1c/1/var r = {val_1: '#d33', val_2: 'text'};
var a = {};
a.saveFirstValue = r; //сюда нужно сохранить копию изначальных данных
a.data = r;
var saveData = r; // пробую сохранить ещё так
a.data['val_1'] = '#000';
a.data['val_2'] = 'new text';
console.log(a.saveFirstValue, a.data, saveData); // все 3 абсолютно одинаковых объекта