freeze-proxy.js (818B)
1 var called = []; 2 var proxy = new Proxy({a: 1, get b() {}}, { 3 getOwnPropertyDescriptor(target, P) { 4 called.push("getOwnPropertyDescriptor"); 5 return Object.getOwnPropertyDescriptor(target, P); 6 }, 7 defineProperty(target, P, desc) { 8 called.push("defineProperty"); 9 if (P == "a") { 10 assertEq(Object.getOwnPropertyNames(desc).length, 2); 11 assertEq(desc.configurable, false); 12 assertEq(desc.writable, false); 13 } else { 14 assertEq(Object.getOwnPropertyNames(desc).length, 1); 15 assertEq(desc.configurable, false); 16 } 17 return Object.defineProperty(target, P, desc); 18 } 19 }); 20 21 Object.freeze(proxy); 22 assertEq(called.toString(), "getOwnPropertyDescriptor,defineProperty,getOwnPropertyDescriptor,defineProperty");