{"ScriptPreparationCode":"var property = 0;\r\nvar data = {\r\n property: property\r\n};\r\n\r\nvar method = {\r\n getProperty: function() {\r\n return property;\r\n },\r\n\r\n setProperty: function(value) {\r\n property = value;\r\n }\r\n};\r\n\r\nvar objectLiteralAccessor = {\r\n get property() {\r\n return property;\r\n },\r\n set property(value) {\r\n property = value;\r\n }\r\n};\r\n\r\nfunction Class() {\r\n}\r\n\r\nClass.prototype = {\r\n get property() {\r\n return property;\r\n },\r\n set property(value) {\r\n property = value;\r\n }\r\n};\r\n \r\nvar prototypeAccessor = new Class();\r\n\r\nvar p0 = new Proxy({}, {\r\n get(target, prop, receiver) {\r\n return property;\r\n },\r\n set(target, prop, value) {\r\n property = value;\r\n return true;\r\n },\r\n});\r\nvar p1 = new Proxy({ property: 0 }, {\r\n get(target, prop, receiver) {\r\n return target[prop]\r\n },\r\n set(target, prop, value) {\r\n target[prop] = value;\r\n return true;\r\n },\r\n});\r\nvar p2 = new Proxy({ property: 0 }, {\r\n get(target, prop, receiver) {\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n set(target, prop, value, receiver) {\r\n return Reflect.set(target, prop, value, receiver);\r\n },\r\n});","TestCases":[{"Name":"Read from data property","Code":"var value = data.property;","IsDeferred":false},{"Name":"Write to data property","Code":"data.property = property\u002B1;","IsDeferred":false},{"Name":"Read from accessor method","Code":"var value = method.getProperty();","IsDeferred":false},{"Name":"Write to mutator method","Code":"method.setProperty(property\u002B1);","IsDeferred":false},{"Name":"Read from object literal property","Code":"var value = objectLiteralAccessor.property;","IsDeferred":false},{"Name":"Write to object literal property","Code":"objectLiteralAccessor.property = property\u002B1;","IsDeferred":false},{"Name":"Read from object literal property on prototype","Code":"var value = prototypeAccessor.property;","IsDeferred":false},{"Name":"Write to object literal property on prototype","Code":"prototypeAccessor.property = property\u002B1;","IsDeferred":false},{"Name":"R p0","Code":"var value = p0.property;","IsDeferred":false},{"Name":"W p0","Code":"p0.property = property\u002B1;","IsDeferred":false},{"Name":"r p1","Code":"var value = p1.property;","IsDeferred":false},{"Name":"w p1","Code":"p1.property = property\u002B1;","IsDeferred":false},{"Name":"r p2","Code":"var value = p2.property;","IsDeferred":false},{"Name":"w p2","Code":"p2.property = property\u002B1;","IsDeferred":false}]}