"I am looking for a reliable approach to implement a deep clone function in JavaScript that can create a complete copy of an object, including all nested properties and arrays. While I've tried using JSON.parse(JSON.stringify(obj)) for shallow cloning, it doesn't work for nested objects since it only creates a shallow copy. I want to find a robust solution that can handle cloning objects with complex nesting.
I've attempted to write a recursive function, but it's not functioning as intended. Here is my current implementation:
function deepClone(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }
  
  let clone = Array.isArray(obj) ? [] : {};
  
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      clone[key] = deepClone(obj[key]);
    }
  }
  
  return clone;
}
// Usage example:
let originalObj = {
  name: 'John',
  age: 30,
  address: {
    street: '123 Main St',
    city: 'New York',
    state: 'NY'
  },
  hobbies: ['reading', 'cooking', 'swimming']
};
let clonedObj = deepClone(originalObj);
However, any modifications made to clonedObj or its nested properties also reflect in the originalObj. Could someone suggest an effective solution to implement a deep clone function that properly handles nested objects in JavaScript? Your assistance would be greatly appreciated. Thank you!"
 
    