{"ScriptPreparationCode":"plainObj = {test: 1};\r\nhandler = {\r\n get: (target, prop) =\u003E (target[prop]),\r\n};\r\nproxy = new Proxy(plainObj, handler);\r\n\r\n\r\nclass ClassGetterSetter {\r\n constructor() {\r\n this._test = 1;\r\n }\r\n get test() {\r\n return this._test;\r\n }\r\n}\r\n\r\nclass CachedGetterSetter {\r\n constructor() {\r\n this._test = 1;\r\n }\r\n get test() {\r\n var val = this._test;\r\n //this.test = val;\r\n \r\n Object.defineProperty(this, \u0027test\u0027, {\r\n \t\tvalue: val,\r\n });\r\n \r\n return val;\r\n }\r\n}\r\n\r\n\r\nobjWithGetter = {\r\n _test: 1,\r\n get test() {\r\n return this._test;\r\n },\r\n};\r\n\r\nobjWithClass = new ClassGetterSetter();\r\nobjWithCachedClass = new CachedGetterSetter();\r\n\r\n\r\nvar a = 0;\r\n\r\nobjWithCachedClass.test;\r\n","TestCases":[{"Name":"getter / setter","Code":"a \u002B= objWithGetter.test;","IsDeferred":false},{"Name":"proxy","Code":"a \u002B= proxy.test;","IsDeferred":false},{"Name":"plain object","Code":"a \u002B= plainObj.test;","IsDeferred":false},{"Name":"class getter","Code":"a \u002B= objWithClass.test;","IsDeferred":false},{"Name":"cached class getter","Code":"a \u002B= objWithCachedClass.test;","IsDeferred":false}]}