function assert(b) { if (!b) throw new Error("Bad assertion"); } let theTarget = { x: 30 }; let handler = { get: function(target, propName, proxyArg) { assert(target === theTarget); assert(proxyArg === obj); if (propName === "y") return 45; assert(propName === "x"); return target[propName]; } }; let proxy = new Proxy(theTarget, handler); let obj = Object.create(proxy); for (let i = 0; i < 1000; i++) { assert(obj.x === 30); assert(obj.y === 45); }