У меня странная ситуация в JavaScript, когда я создаю объект и затем передаю его в качестве аргумента функции, которая затем обновляет значения и затем возвращает новый обновленный объект.
function objBuild() {
var obj_old = {}; // original object
var obj_new = {}; // updated object
// set values for original object
obj_old.val01 = "val01_old";
obj_old.val02 = "val02_old";
obj_old.val03 = "val03_old";
// set values for new object using
// the original object as a template
obj_new = objUpdate(obj_old);
console.log(obj_old); // this shows obj_new data which I don't want
console.log(obj_new); // this shows obj_new data which I want
}
function objUpdate(obj) {
obj.val03 = "val03_new";
return obj;
}
Я ожидал, что новый объект будет обновлен с новым значением, которым оно является, однако старый объект также обновляется.
Может быть, функция берет старый объект в качестве ссылки, и хотя я возвращаю отдельное значение, он вспоминает, что с ним случилось?
Я не уверен, но если это так, то возможно ли сохранить старый Объект в целости?