{"ScriptPreparationCode":"function getProp(property) {\r\n var selector = typeof property === \u0027string\u0027 ? property.split(\u0027.\u0027) : property\r\n\r\n return (obj) =\u003E selector.reduce((newObj, currentProp) =\u003E {\r\n if (newObj[currentProp]) {\r\n newObj = newObj[currentProp]\r\n\r\n return newObj\r\n }\r\n }, 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}\r\n\r\nvar 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}","TestCases":[{"Name":"Lodash","Code":"_.get(obj, \u0027a.b.c.foo.bar\u0027)","IsDeferred":false},{"Name":"Mine","Code":"getProp(\u0027a.b.c.foo.bar\u0027)(obj)","IsDeferred":false},{"Name":"Rambda","Code":"path(\u0027a.b.c.foo.bar\u0027)(obj)","IsDeferred":false}]}