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