| function assert(b) { |
| if (!b) |
| throw new Error("Bad assertion"); |
| } |
| |
| { |
| let ogTarget = {x: 20}; |
| let theTarget = new Proxy(ogTarget, { |
| get: function(target, propName, proxyArg) { |
| assert(target === ogTarget); |
| if (propName === "y") |
| return 45; |
| return target[propName]; |
| } |
| }); |
| let handler = { |
| get: function(target, propName, proxyArg) { |
| if (propName === "z") |
| return 60; |
| return target[propName]; |
| } |
| }; |
| let proxy = new Proxy(theTarget, handler); |
| for (let i = 0; i < 500; i++) { |
| assert(proxy.x === 20); |
| assert(proxy["x"] === 20); |
| |
| assert(proxy.y === 45); |
| assert(proxy["y"] === 45); |
| |
| assert(proxy.z === 60); |
| assert(proxy["z"] === 60); |
| } |
| } |