Как копировать объект в JavaScript?
Через Object.assign()const old = {mi: 1, ti: 2} // копируемый объект
const new = Object.asign({}, old);// присваиваем пустому объекту свойства old
new ! == old;// true
Object.clone = function clone(o, copyProto, copyNested){
   function Create(i){
        for(i in o){
          if(o.hasOwnProperty(i)) this[i] = ( copyNested && typeof o[i] == "object" ) 
             ? clone(o[i], true, true) : o[i];
        }
   }
   if(copyProto && "__proto__" in o) Create.prototype = o.__proto__; //IE затупит
   return new Create();
}//o - Целевой объект
//copyProto - будет ли скопирован прототип объекта
//copyNested - будут ли клонированы объекты, вложенные в текущий или сохранятся в виде ссылокvar target = {
  "A" : {
       "Z" : 1,
       "X" : 2,
       "Y" : {
          "F" : 3,
          "G" : 4
       }
  }
};

target.__proto__.f = function(){};

var clone1 = Object.clone(target, false, true);
clone1.f //undefined
clone1.A == target.A //false

var clone2 = Object.clone(target, true);
clone2.f //function
clone2.A == target.A //true