{"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\nvar myCopy = null;\r\n\r\nvar jsondiffpatchClone = jsondiffpatch.clone;\r\nvar rfdcClone = rfdc();\r\n\r\n///////////////////////////////////////////////////////////////////\r\nclass ObjectUtils {\r\n static clone(obj) {\r\n let clone\r\n\r\n if (typeof obj !== \u0027object\u0027) {\r\n return obj\r\n }\r\n if (!obj) {\r\n return obj\r\n }\r\n if (Array.isArray(obj)) {\r\n clone = []\r\n for (let i = 0; i \u003C obj.length; i \u002B= 1) {\r\n clone[i] = ObjectUtils.clone(obj[i])\r\n }\r\n return clone\r\n }\r\n\r\n clone = {}\r\n Object.keys(obj).forEach((key) =\u003E {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n clone[key] = ObjectUtils.clone(obj[key])\r\n }\r\n })\r\n\r\n return clone\r\n }\r\n}\r\nvar recursiveDeepCopy = ObjectUtils.clone\r\n//////////////////////////////////////////////////////////////////\r\n// Use https://www.npmjs.com/package/fastest-json-copy\r\n// Instead of the code below! It is the same thing, just minified.\r\nvar isArray=Array.isArray;function fastestJsonCopy(r){if(!r)return r;if(isArray(r)){for(var e=[],o=r.length,t=0;t\u003Co;t\u002B\u002B)e.push(fastestJsonCopy(r[t]));return e}if(\u0022object\u0022==typeof r){var y=Object.keys(r),a=(o=y.length,{});for(t=0;t\u003Co;t\u002B\u002B){var c=y[t];a[c]=fastestJsonCopy(r[c])}return a}return r}\r\n","TestCases":[{"Name":"lodash cloneDeep","Code":"myCopy = _.cloneDeep(MyObject);","IsDeferred":false},{"Name":"JSON.parse(JSON.stringify())","Code":"myCopy = JSON.parse(JSON.stringify(MyObject));","IsDeferred":false},{"Name":"recursiveDeepCopy","Code":"myCopy = recursiveDeepCopy(MyObject);","IsDeferred":false},{"Name":"fastest-json-copy npm package","Code":"myCopy = fastestJsonCopy(MyObject);","IsDeferred":false},{"Name":"jsondiffpatch.clone()","Code":"myCopy = jsondiffpatchClone(MyObject);","IsDeferred":false},{"Name":"rfdc","Code":"myCopy = rfdcClone(MyObject);","IsDeferred":false}]}