{"ScriptPreparationCode":null,"TestCases":[{"Name":"Object Literal","Code":"function Point(x, y){\r\n\treturn {\r\n \tx, \r\n \ty, \r\n \tadd: (point)=\u003EPoint(this.x \u002B point.x, this.y \u002B point.y),\r\n\t \tsub: (point)=\u003EPoint(this.x - point.x, this.y - point.y)\r\n } \r\n}\r\n\r\n\r\nvar p1 = Point(10, 10);\r\nvar p2 = Point(10, -10);\r\nvar sum = p1.add(p2);\r\nvar dif = p1.sub(p2);","IsDeferred":false},{"Name":"Scoped Function","Code":"function point(x = 0, y = 0){\r\n\t return {\r\n add: (pointc)=\u003Epoint(x \u002B pointc.x, y \u002B pointc.y),\r\n sub: (pointc)=\u003Epoint(x - pointc.x, y - pointc.y),\r\n get: ()=\u003E({x, y}),\r\n set: (v)=\u003E (x = v.x, y=v.y)\r\n } \r\n}\r\nvar p1 = point(10, 10);\r\nvar p2 = point(10, -10);\r\nvar sum = p1.add(p2.get());\r\nvar dif = p1.sub(p2.get());","IsDeferred":false},{"Name":"Prototype","Code":"function Point(x, y){\r\n this.x = x;\r\n this.y = y;\r\n}\r\n\r\nconst pointParent = {\r\n add(point) {\r\n return new Point(this.x \u002B point.x, this.y \u002B point.y);\r\n },\r\n sub(point) {\r\n return new Point(this.x - point.x, this.y - point.y);\r\n }\r\n};\r\n\r\nPoint.prototype = pointParent;\r\n\r\n var p1 = new Point(10, 10);\r\n var p2 = new Point(10, -10);\r\n var sum = p1.add(p2);\r\n var dif = p1.sub(p2);","IsDeferred":false},{"Name":"External dependencies","Code":" const utility = {\r\n sub:(base, point) =\u003E {\r\n return pointNew(base.x - point.x, base.y - point.y);\r\n },\r\n add:(base, point) =\u003E {\r\n return pointNew(base.x \u002B point.x, base.y \u002B point.y);\r\n }\r\n }\r\n\r\n function pointNew (x, y) {\r\n let p = {\r\n x:x,\r\n y:y\r\n }\r\n return p\r\n }\r\n\r\n let a1 = pointNew(10, 10);\r\n let a2 = pointNew(10, -10);\r\n let sum = utility.add(a1, a2);\r\n let dif = utility.sub(a1, a2);","IsDeferred":false}]}