{"ScriptPreparationCode":"class FunctionTester {\r\n\tcounterA = 0;\r\n\tcounterB = 0;\r\n\tcallback;\r\n\tconstructor(options = {}) {\r\n\t\tthis.onTodo1 = options.onTodo1;\r\n\t\tthis.onTodo2 = options.onTodo2;\r\n\t};\r\n\tstuffTodo1(thing) {\r\n\t\tthis.counterA\u002B\u002B;\r\n\t\tthing.aap = \u0022noob\u0022;\r\n\t\tthis.onTodo1(thing, () =\u003E this.stuffTodo2(thing));\r\n\t};\r\n\tstuffTodo2(thing) {\r\n\t\tthis.counterB\u002B\u002B;\r\n\t\tthing.y = \u0022mongol\u0022;\r\n\t\tthis.onTodo2(thing, this.callback);\r\n\t};\r\n\tmultipleProtoMethods(callback) {\r\n\t\tthis.callback = callback;\r\n\t\tthis.stuffTodo1({ a: 10 });\r\n\t};\r\n\toneProtoMethod(callback) {\r\n\t\tconst stuffTodo1 = thing =\u003E {\r\n\t\t\tthis.counterA\u002B\u002B;\r\n\t\t\tthing.aap = \u0022noob\u0022;\r\n\t\t\tthis.onTodo1(thing, () =\u003E {\r\n\t\t\t\tthis.counterB\u002B\u002B;\r\n\t\t\t\tthing.y = \u0022mongol\u0022;\r\n\t\t\t\tthis.onTodo2(thing, callback);\r\n\t\t\t});\r\n\t\t};\r\n\t\tstuffTodo1({ a: 10 });\r\n\t};\r\n};\r\nvar multipleProtoMethodsTester = new FunctionTester({\r\n\tonTodo1(thing, callback) {\r\n\t\tthing.noob = \u0022aap\u0022;\r\n\t\tcallback();\r\n\t},\r\n\tonTodo2(thing, callback) {\r\n\t\tthing.Y = \u0022MONGOL\u0022;\r\n\t\tcallback(thing);\r\n\t},\r\n});\r\nvar oneProtoMethodTester = new FunctionTester({\r\n\tonTodo1(thing, callback) {\r\n\t\tthing.noob = \u0022aap\u0022;\r\n\t\tcallback();\r\n\t},\r\n\tonTodo2(thing, callback) {\r\n\t\tthing.Y = \u0022MONGOL\u0022;\r\n\t\tcallback(thing);\r\n\t},\r\n});","TestCases":[{"Name":"Chaining multiple prototype Methods","Code":"let theResult;\r\nmultipleProtoMethodsTester.multipleProtoMethods(result =\u003E {\r\n theResult = result;\r\n});","IsDeferred":false},{"Name":"One prototype method","Code":"let theResult;\r\noneProtoMethodTester.oneProtoMethod(result =\u003E {\r\n theResult = result;\r\n});","IsDeferred":false}]}