Как я могу реализовать алгоритм глубокого копирования без использования JSON.parse и JSON.stringify

let user = {
  name: "John",
  age: 30
};

let clone = Object.assign({}, user);

Ответы (1 шт):

Автор решения: Aziz Umarov

Реализовать например самому глубокое копирование как указано тут

function cloneSO(obj) {
        // Handle the 3 simple types, and null or undefined
        if (null == obj || "object" != typeof obj) return obj;
    
        // Handle Array
        if (obj instanceof Array) {
            var copy = [];
            for (var i = 0, len = obj.length; i < len; i++) {
                copy[i] = cloneSO(obj[i]);
            }
            return copy;
        }
    
        // Handle Object
        if (obj instanceof Object) {
            var copy = {};
            for (var attr in obj) {
                if (obj.hasOwnProperty(attr)) copy[attr] = cloneSO(obj[attr]);
            }
            return copy;
        }
    
        throw new Error("Unable to copy obj! Its type isn't supported.");
    }
    
    let user = {
      name: "John",
      age: 30
   };
   
   let userCopy = cloneSO(user);
   
   console.log(userCopy, user, userCopy === user);

→ Ссылка