{"ScriptPreparationCode":"function deepCopy(obj) {\r\n var copy;\r\n\r\n // Handle the 3 simple types, and null or undefined\r\n if (null == obj || \u0022object\u0022 != typeof obj) return obj;\r\n\r\n // Handle Date\r\n if (obj instanceof Date) {\r\n copy = new Date();\r\n copy.setTime(obj.getTime());\r\n return copy;\r\n }\r\n\r\n // Handle Array\r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (var i = 0, len = obj.length; i \u003C len; i\u002B\u002B) {\r\n copy[i] = deepCopy(obj[i]);\r\n }\r\n return copy;\r\n }\r\n\r\n // Handle Object\r\n if (obj instanceof Object) {\r\n copy = {};\r\n for (var attr in obj) {\r\n if (obj.hasOwnProperty(attr)) copy[attr] = deepCopy(obj[attr]);\r\n }\r\n return copy;\r\n }\r\n\r\n throw new Error(\u0022Unable to copy obj! Its type isn\u0027t supported.\u0022);\r\n};","TestCases":[{"Name":"JSON copy","Code":"const data = {\u0027my object\u0027 : [{\u0027object a\u0027 : \u0027object object\u0027},{\u0027object b\u0027 : \u0027object object\u0027}, {\u0027object c\u0027 : \u0027object object\u0027, \u0027objectd\u0027: 36}, 5]}\r\na = JSON.parse(JSON.stringify(data));","IsDeferred":false},{"Name":"Deep copy","Code":"const data = {\u0027my object\u0027 : [{\u0027object a\u0027 : \u0027object object\u0027},{\u0027object b\u0027 : \u0027object object\u0027}, {\u0027object c\u0027 : \u0027object object\u0027, \u0027objectd\u0027: 36}, 5]}\r\na = deepCopy(data);","IsDeferred":false}]}