{"ScriptPreparationCode":"var obj = {\r\n a: {\r\n b: {\r\n c: {\r\n foo: {\r\n bar() {\r\n return \u002742\u0027\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getProp1(list, obj) {\r\n const selector = list.split(\u0027.\u0027)\r\n if (arguments.length === 1) return _obj =\u003E getProp1(list, _obj)\r\n\r\n for (const prop of selector) {\r\n if (obj[prop]) {\r\n obj = obj[prop]\r\n }\r\n }\r\n\r\n return obj\r\n}\r\n\r\nfunction getProp2(list, obj) {\r\n const selector = list.split(\u0027.\u0027)\r\n const lengthof = selector.length\r\n if (arguments.length === 1) return _obj =\u003E getProp2(list, _obj)\r\n\r\n for (const prop of selector) {\r\n if (obj[prop]) {\r\n obj = obj[prop]\r\n }\r\n }\r\n \r\n \r\n for (let i = 0; i \u003C lengthof; i\u002B\u002B) {\r\n if (obj[selector[i]]) {\r\n obj = obj[prop]\r\n }\r\n }\r\n\r\n return obj\r\n}\r\n\r\nfunction getProp3(list, obj) {\r\n const selector = list.split(\u0027.\u0027)\r\n if (arguments.length === 1) return _obj =\u003E getProp3(list, _obj)\r\n\r\n for (const i in selector) {\r\n if (obj[selector[i]]) {\r\n obj = obj[selector[i]]\r\n }\r\n }\r\n\r\n return obj\r\n}\r\n\r\nfunction path(list, obj){\r\n if (arguments.length === 1) return _obj =\u003E path(list, _obj)\r\n\r\n if (obj === null || obj === undefined){\r\n return undefined\r\n }\r\n let willReturn = obj\r\n let counter = 0\r\n\r\n const pathArrValue = typeof list === \u0027string\u0027 ? list.split(\u0027.\u0027) : list\r\n\r\n while (counter \u003C pathArrValue.length){\r\n if (willReturn === null || willReturn === undefined){\r\n return undefined\r\n }\r\n willReturn = willReturn[ pathArrValue[ counter ] ]\r\n counter\u002B\u002B\r\n }\r\n\r\n return willReturn\r\n}","TestCases":[{"Name":"Lodash","Code":"_.get(\u0027a.b.c.foo.bar\u0027, obj)","IsDeferred":false},{"Name":"Mine","Code":"getProp1(\u0027a.b.c.foo.bar\u0027)(obj)","IsDeferred":false},{"Name":"Mine2","Code":"getProp2(\u0027a.b.c.foo.bar\u0027)(obj)","IsDeferred":false},{"Name":"Mine3","Code":"getProp3(\u0027a.b.c.foo.bar\u0027)(obj)","IsDeferred":false}]}