{"ScriptPreparationCode":"class ClassObject {\r\n constructor(a, b, c) {\r\n this.a = a\r\n this.b = b\r\n this.c = c\r\n }\r\n}\r\n\r\nfunction ObjectLiteral(a, b, c) {\r\n return {\r\n a,\r\n b,\r\n c\r\n }\r\n}\r\n\r\nfunction createClassObjectProxy(a, b, c) {\r\n return new Proxy(new ClassObject(a, b, c), {\r\n get(target, key, receiver) {\r\n return Reflect.get(target, key, receiver)\r\n },\r\n set(target, key, value, receiver) {\r\n Reflect.set(target, key, value, receiver)\r\n return true;\r\n }\r\n })\r\n}\r\n\r\nfunction createObjectLiteralProxy(a, b, c) {\r\n return new Proxy(ObjectLiteral(a, b, c), {\r\n get(target, key, receiver) {\r\n return Reflect.get(target, key, receiver)\r\n },\r\n set(target, key, value, receiver) {\r\n Reflect.set(target, key, value, receiver)\r\n return true;\r\n }\r\n })\r\n}\r\n\r\nconst classObjectProxy = createClassObjectProxy(1, 2, 3)\r\nconst objectLiteralProxy = createObjectLiteralProxy(1, 2, 3)\r\n\r\nfunction getClassObjectProxy() {\r\n return classObjectProxy;\r\n}\r\n\r\nfunction getObjectLiteralProxy() {\r\n return objectLiteralProxy;\r\n}","TestCases":[{"Name":"Initialize Proxy: Class object","Code":"const obj = createClassObjectProxy(1,2,3)","IsDeferred":false},{"Name":"Initialize Proxy: Object literal","Code":"const obj = createObjectLiteralProxy(1,2,3)","IsDeferred":false},{"Name":"Get property: Class object","Code":"const obj = getClassObjectProxy()\r\n\r\nconst a = obj.a\r\nconst b = obj.b\r\nconst c = obj.c","IsDeferred":false},{"Name":"Get property: Object literal","Code":"const obj = getObjectLiteralProxy()\r\n\r\nconst a = obj.a\r\nconst b = obj.b\r\nconst c = obj.c","IsDeferred":false},{"Name":"Set property: Class object","Code":"const obj = getClassObjectProxy()\r\n\r\nobj.a = 2\r\nobj.b = 3\r\nobj.c = 4","IsDeferred":false},{"Name":"Set property: Object literal","Code":"const obj = getObjectLiteralProxy()\r\n\r\nobj.a = 2\r\nobj.b = 3\r\nobj.c = 4","IsDeferred":false}]}