{"ScriptPreparationCode":"// \u751F\u6210\u6D4B\u8BD5\u5BF9\u8C61\r\nconst createTestObject = (size) =\u003E {\r\n // \u7236\u5BF9\u8C61\uFF08\u539F\u578B\uFF09\r\n const parent = {\r\n parentProp1: \u0027parent\u0027,\r\n parentProp2: \u0027parent2\u0027,\r\n parentProp3: {},\r\n parentProp4: [],\r\n parentMethod1() {\r\n return \u0027parentMethod\u0027;\r\n },\r\n parentMethod2() {\r\n return \u0027parentMethod\u0027;\r\n },\r\n parentMethod3() {\r\n return \u0027parentMethod\u0027;\r\n },\r\n };\r\n\r\n // \u5B50\u5BF9\u8C61\uFF08\u7EE7\u627F Parent\uFF09\r\n const child = Object.create(parent);\r\n \r\n for (let i = 0; i \u003C size; i\u002B\u002B) {\r\n child[\u0060key${i}\u0060] = i;\r\n }\r\n return child;\r\n};\r\n\r\n// \u6D4B\u8BD5 for...in\r\nfunction testForIn(obj) {\r\n const start = performance.now();\r\n for (const key in obj) {\r\n if (Object.hasOwn(obj, key)) {\r\n const value = obj[key];\r\n }\r\n }\r\n return performance.now() - start;\r\n}\r\n\r\n// \u6D4B\u8BD5 Object.keys \u002B for\r\nfunction testObjectKeysFor(obj) {\r\n const start = performance.now();\r\n const keys = Object.keys(obj);\r\n for (let i = 0; i \u003C keys.length; i\u002B\u002B) {\r\n const key = keys[i];\r\n const value = obj[key];\r\n }\r\n return performance.now() - start;\r\n}\r\n\r\n// \u8FD0\u884C\u6D4B\u8BD5\r\nconst obj = createTestObject(1e6);","TestCases":[{"Name":"forIn","Code":"testForIn(obj)","IsDeferred":false},{"Name":"forIndex","Code":"testObjectKeysFor(obj)","IsDeferred":false}]}