| // Assigning to a proxy with no set handler calls the defineProperty handler |
| // when no such property already exists. |
| |
| var hits = 0; |
| var t = {}; |
| var p = new Proxy(t, { |
| defineProperty(t, id, desc) { hits++; return true; } |
| }); |
| p.x = 1; |
| assertEq(hits, 1); |
| assertEq("x" in t, false); |
| |
| // Same thing, but the receiver is a plain object inheriting from p: |
| var receiver = Object.create(p); |
| hits = 0; |
| receiver.x = 2; |
| assertEq(hits, 0); |
| assertEq("x" in t, false); |
| assertEq(receiver.hasOwnProperty("x"), true); |
| assertEq(receiver.x, 2); |