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); } }