{"ScriptPreparationCode":"var orig = {\r\n hey: \u0022howdy\u0022\r\n}\r\nfor (i = 0; i \u003C 1000; i\u002B\u002B) {\r\n orig[Math.random() \u002B \u0022\u0022] = i % 3 === 0 ? \u0022some string blah blah blah\u0022 : i % 3 === 1 ? [\u0022a\u0022, \u0022b\u0022, \u0022c\u0022] : {\r\n yo: \u0022hello\u0022\r\n };\r\n}\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;","TestCases":[{"Name":"Object.assign()","Code":"const clone = Object.assign({}, orig, { hey: \u0022sup\u0022 })\r\nclone.hey","IsDeferred":false},{"Name":"Spread","Code":"const clone = { ...orig, hey: \u0022sup\u0022 }\r\nclone.hey","IsDeferred":false},{"Name":"For-in (no hasOwnProperty check)","Code":"const clone = {};\r\nfor (const k in orig) {\r\n clone[k] = orig[k]\r\n}\r\nclone.hey = \u0022sup\u0022\r\nclone.hey","IsDeferred":false},{"Name":"For-in (direct hasOwnProperty check)","Code":"const clone = {};\r\nfor (const k in orig) {\r\n if (orig.hasOwnProperty(k)) {\r\n\tclone[k] = orig[k]\r\n }\r\n}\r\nclone.hey = \u0022sup\u0022\r\nclone.hey","IsDeferred":false},{"Name":"For-in (indirect hasOwnProperty check)","Code":"const clone = {};\r\nfor (const k in orig) {\r\n if (hasOwnProperty.call(orig, k)) {\r\n\tclone[k] = orig[k]\r\n }\r\n}\r\nclone.hey = \u0022sup\u0022\r\nclone.hey","IsDeferred":false}]}