testDirectProxyKeys10.js (851B)
1 load(libdir + "asserts.js"); 2 3 // Allow [[GetOwnPropertyDescriptor]] to spoof enumerability of target object's 4 // properties. Note that this also tests that the getOwnPropertyDescriptor is 5 // called by Object.keys(), as expected. 6 7 var target = {}; 8 var handler = { 9 getOwnPropertyDescriptor : function (target, P) { 10 var targetDesc = Object.getOwnPropertyDescriptor(target, P); 11 // Lie about enumerability 12 targetDesc.enumerable = !targetDesc.enumerable; 13 return targetDesc; 14 } 15 }; 16 17 for (let p of [new Proxy(target, handler), Proxy.revocable(target, handler).proxy]) { 18 Object.defineProperty(target, "foo", { configurable: true, enumerable: false }); 19 assertDeepEq(Object.keys(p), ["foo"]); 20 21 Object.defineProperty(target, "foo", {configurable: true, enumerable: true}); 22 assertDeepEq(Object.keys(p), []); 23 }