| var called = []; |
| var proxy = new Proxy({a: 1, get b() {}}, { |
| getOwnPropertyDescriptor(target, P) { |
| called.push("getOwnPropertyDescriptor"); |
| return Object.getOwnPropertyDescriptor(target, P); |
| }, |
| defineProperty(target, P, desc) { |
| called.push("defineProperty"); |
| if (P == "a") { |
| assertEq(Object.getOwnPropertyNames(desc).length, 2); |
| assertEq(desc.configurable, false); |
| assertEq(desc.writable, false); |
| } else { |
| assertEq(Object.getOwnPropertyNames(desc).length, 1); |
| assertEq(desc.configurable, false); |
| } |
| return Object.defineProperty(target, P, desc); |
| } |
| }); |
| |
| Object.freeze(proxy); |
| assertEq(called.toString(), "getOwnPropertyDescriptor,defineProperty,getOwnPropertyDescriptor,defineProperty"); |