Description: This method manually creates a deep copy of an object using a recursive function to handle nested objects.

Example:

function deepClone(obj) {
  if (obj === null || typeof obj !== 'object') {
    return obj;
  }

  if (Array.isArray(obj)) {
    const arrCopy = [];
    for (let i = 0; i < obj.length; i++) {
      arrCopy[i] = deepClone(obj[i]);
    }
    return arrCopy;
  }

  const objCopy = {};
  for (const key in obj) {
    if (obj.hasOwnProperty(key)) {
      objCopy[key] = deepClone(obj[key]);
    }
  }
  return objCopy;
}

const original = {
  name: 'Max',
  age: 6,
  color: 'black',
  nested: {
    a: 1,
    b: 2
  }
};

const copy = deepClone(original);
console.log(copy); // Output: { name: 'Max', age: 6, color: 'black', nested: { a: 1, b: 2 }}

copy.nested.b = 20;
console.log(original.nested.b); // Output: 2 (original nested object is not affected)