Плитко копиране на обекти

Казва се, че един обект е плитко копиран, когато свойствата на източника от най-високо ниво се копират без никаква препратка и съществува свойство източник, чиято стойност е обект и се копира като препратка. Ако изходната стойност е препратка към обект, тя само копира тази референтна стойност в целевия обект.

Плиткото копие ще дублира свойствата от най-високо ниво, но вложеният обект се споделя между оригинала (източник) и копието (цел).

Пример: Използване на метода Object.assign().

Методът Object.assign() се използва за копиране на стойностите на всички изброими собствени свойства от един или повече изходни обекти към целеви обект.

Дълбоко копие на обект

Дълбокото копие ще дублира всеки обект, който срещне. Копието и оригиналният обект няма да споделят нищо, така че ще бъде копие на оригинала.

Пример: Използване на JSON.parse(JSON.stringify(object));

Друг начин за дълбоко клониране

function cloneObject(obj) {
    var clone = {};
    for(var i in obj) {
        if(obj[i] != null &&  typeof(obj[i])=="object")
            clone[i] = cloneObject(obj[i]);
        else
            clone[i] = obj[i];
    }
    return clone;
}