
The term "deep clone" is not formally defined in JavaScript's language specification, but is generally well understood in the community. A deep clone makes a copy of JavaScript value, leading to a completely new value that has no references pointing back to the properties in the original object (if it's an object). Any changes made to the deep-copied object will not affect the original object.
Implement a deepClone function that performs a deep clone operation on JavaScript objects. You can assume the input object only contains JSON-serializable values, i.e. null, boolean, number, string, and will not contain any other built-in objects such as Date, Regex, Map or Set.
const obj1 = { user: { role: 'admin' } };const clonedObj1 = deepClone(obj1);clonedObj1.user.role = 'guest'; // Change the cloned user's role to 'guest'.clonedObj1.user.role; // 'guest'obj1.user.role; // Should still be 'admin'.const obj2 = { foo: [{ bar: 'baz' }] };const clonedObj2 = deepClone(obj2);obj2.foo[0].bar = 'bax'; // Modify the original object.obj2.foo[0].bar; // 'bax'clonedObj2.foo[0].bar; // Should still be 'baz'.