// When assigning to an object with a proxy is on the prototype chain, // the proxy's set handler is called. var C = {}; var B = new Proxy(C, { get() { throw "FAIL"; }, getOwnPropertyDescriptor() { throw "FAIL"; }, has() { throw "FAIL"; }, defineProperty() { throw "FAIL"; }, set(target, id, value, receiver) { hits++; assertEq(target, C); assertEq(id, "x"); assertEq(value, 3); assertEq(receiver, A); return true; } }); var A = Object.create(B); var hits = 0; A.x = 3; assertEq(hits, 1);