{"ScriptPreparationCode":"function Foo() {\r\n \u0027use strict\u0027;\r\n let self = {};\r\n\r\n /****************************************************************************\r\n * Properties\r\n ***************************************************************************/\r\n self.foo1 = 15;\r\n self.foo2 = \u0027testing\u0027;\r\n self.foo3 = { i: 1, am: 2, a: 3, literal: 4 };\r\n self.foo4 = null;\r\n\r\n /****************************************************************************\r\n * Methods\r\n ***************************************************************************/\r\n self.constructor = function () {\r\n self.foo4 = self.foo2 \u002B self.foo1;\r\n }\r\n\r\n self.doFoo1 = function () {\r\n return self.foo2;\r\n }\r\n\r\n self.doFoo2 = function () {\r\n self.foo1 \u002B= 1;\r\n return self.foo1;\r\n }\r\n\r\n /****************************************************************************\r\n * Public Exports\r\n ***************************************************************************/\r\n self.public = {\r\n doFoo1: self.doFoo1,\r\n doFoo2: self.doFoo2\r\n }\r\n\r\n self.constructor();\r\n return self.public;\r\n}\r\n\r\npreFoo = Foo();\r\n\r\nfunction Bar() {\r\n this._foo1 = 15;\r\n this._foo2 = \u0027testing\u0027;\r\n this._foo3 = { i: 1, am: 2, a: 3, literal: 4 };\r\n this._foo4 = this._foo2 \u002B this._foo1;\r\n}\r\n\r\nBar.prototype.doFoo1 = function () {\r\n return this._foo2;\r\n}\r\n\r\nBar.prototype.doFoo2 = function () {\r\n this._foo1 \u002B= 1;\r\n return this._foo1;\r\n}\r\n\r\npreBar = new Bar();","TestCases":[{"Name":"Instantiation - Closure","Code":"let foo = Foo();","IsDeferred":false},{"Name":"Instantiation - Prototype","Code":"let bar = new Bar();","IsDeferred":false},{"Name":"Utilization - Closure","Code":"let baz = preFoo.doFoo2();","IsDeferred":false},{"Name":"Utilization - Prototype","Code":"let baz = preBar.doFoo2();","IsDeferred":false}]}