{"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 deepFreeze(object) {\r\n for (const v of Array.isArray(object) ? object : Object.values(object)) {\r\n if (v \u0026\u0026 typeof v === \u0027object\u0027) {\r\n deepFreeze(v);\r\n }\r\n }\r\n Object.freeze(object);\r\n return object;\r\n}\r\n\r\nfunction deepClone(object) {\r\n if (Array.isArray(object)) {\r\n const len = object.length;\r\n const result = new Array(len);\r\n for (let i = 0; i \u003C len; \u002B\u002Bi) {\r\n const v = object[i];\r\n result[i] = v \u0026\u0026 typeof v === \u0027object\u0027 ? deepClone(v) : v;\r\n }\r\n return result;\r\n } else {\r\n const result = {};\r\n for (const k in object) {\r\n const v = object[k];\r\n result[k] = v \u0026\u0026 typeof v === \u0027object\u0027 ? deepClone(v) : v;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nvar myCopy = null;\r\n","TestCases":[{"Name":"Lodash cloneDeep","Code":"myCopy = _.cloneDeep(MyObject);","IsDeferred":false},{"Name":"Json clone","Code":"myCopy = JSON.parse(JSON.stringify(MyObject));","IsDeferred":false},{"Name":"freeze and destructure","Code":"Object.freeze(MyObject); myCopy = { ...MyObject };","IsDeferred":false},{"Name":"deepClone","Code":"myCopy = deepClone(MyObject)","IsDeferred":false},{"Name":"deepFreeze","Code":"deepFreeze(MyObject); myCopy = MyObject","IsDeferred":false}]}