привет всем! поможите ибо заблудился и не нахожу ответов)
есть элемент
<div id="test" data-json='{"param_1":"value_1","param_2":""}'></div>
и вот такой код:
var foo = $('#test').data('json');
console.log(foo);
if(!foo.param_2) foo.param_2 = 'value_2';
var bar = $('#test').data('json');
console.log(bar);
первый console.log выводит:
Object { param_1="value_1", param_2=""}
и это понятно, но второй:
Object { param_1="value_1", param_2="value_2"}
как? почему? ведь data не переназначалась!
как будто в переменную foo назначилась ссылка на объект data.
вот собственно и вопрос: как избежать такого поведения?
P.S.
знаю что JSON можно и так достать:
var foo = $.parseJSON($('#test').attr('data-json'));
но тогда, если действительно понадобится его переназначить, так не получится:
$('#test').data('json', new_json_obj);
придётся и новое значение задавать аналогично:
$('#test').attr('data-json', JSON.stringify(new_json_obj));
и вообще такое решение не красиво и убивает всю логику работы с data