JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>

JavaScript

const deepClone = (obj, output = (Array.isArray(obj) ? [...obj] : {...obj})) => {
  Object.keys(obj).forEach((key) => {
    if (typeof obj[key] === 'object') {
      output[key] = Array.isArray(obj[key]) ? [...obj[key]] : {...obj[key]}
      deepCopy(obj[key], output[key])
    }
  })

  return output
}

let testObject = {
  counter: 1
}

let newObject = deepClone(testObject)

newObject.counter++

console.log("testObject data is " + testObject.counter)
console.log("newObject data is " + newObject.counter)