{"ScriptPreparationCode":null,"TestCases":[{"Name":"Function 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};\r\n\r\nconst pointParentParent = {\r\n sub(point) {\r\n return new Point(this.x \u002B point.x, this.y \u002B point.y);\r\n }\r\n};\r\n\r\nObject.setPrototypeOf(pointParent, pointParentParent);\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":"Object Literal","Code":" const pointParent = {\r\n add(point) {\r\n return pointNew(this.x \u002B point.x, this.y \u002B point.y);\r\n }\r\n };\r\n\r\n const pointParentParent = {\r\n sub(point) {\r\n return pointNew(this.x \u002B point.x, this.y \u002B point.y);\r\n }\r\n };\r\n Object.setPrototypeOf(pointParent, pointParentParent);\r\n\r\n function pointNew (x, y) {\r\n let p = {\r\n x:x,\r\n y:y\r\n }\r\n Object.setPrototypeOf(p, pointParent);\r\n return p\r\n }\r\n\r\n \r\n let a1 = pointNew(10, 10);\r\n let a2 = pointNew(10, -10);\r\n let sum = a1.add(a2);\r\n let dif = a1.sub(a2);\r\n","IsDeferred":false}]}