В JS присвоение объектов происходит по ссылке, как следствие, все операции происходят на одном экземпляре объекта. Чтобы создать копию объекта, надо создать новый пустой объект, рекурсивно присвоить ему свойства старого.

exports.deepCopy = function (obj) {
    if (typeof obj != "object") {
        return obj;
    }
    
    var copy = obj.constructor();
    for (var key in obj) {
        if (typeof obj[key] == "object") {
            copy[key] = this.deepCopy(obj[key]);
        } else {
            copy[key] = obj[key];
        }
    }
    return copy;
};

 

 

Никаких мыслей по поводу “Клонирование объектов ”