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