{"ScriptPreparationCode":"var MyObject = {\r\n description: \u0027Creates a deep copy of source, which should be an object or an array.\u0027,\r\n myNumber: 123456789,\r\n myBoolean: true,\r\n jayson: {\r\n stringify: \u0027JSON.stringify() method converts a JavaScript value to a JSON string....\u0027,\r\n parse: \u0027JSON.parse() method parses a JSON string...\u0027\r\n }\r\n};\r\n\r\nfunction cloneDeep(obj) {\r\n if (obj === null || typeof obj !== \u0027object\u0027) {\r\n return obj\r\n }\r\n if (obj instanceof Date) {\r\n return new Date(obj)\r\n }\r\n if (obj instanceof RegExp) {\r\n return new RegExp(obj)\r\n }\r\n if (Array.isArray(obj)) {\r\n return obj.map(v =\u003E cloneDeep(v))\r\n }\r\n\r\n const clonedObj = {}\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n clonedObj[key] = cloneDeep(obj[key])\r\n }\r\n }\r\n return clonedObj\r\n}\r\n\r\nvar myCopy = null;","TestCases":[{"Name":"Lodash cloneDeep","Code":"myCopy = _.cloneDeep(MyObject);","IsDeferred":false},{"Name":"Custom Recursive cloneDeep","Code":"myCopy = cloneDeep(MyObject);","IsDeferred":false}]}