testDirectProxyGetOwnPropertyNames8.js (1010B)
1 // Return the names returned by the trap 2 var target = {}; 3 Object.defineProperty(target, 'foo', { 4 configurable: true 5 }); 6 7 var handler = { ownKeys: () => [ 'bar' ] }; 8 9 for (let p of [new Proxy(target, handler), Proxy.revocable(target, handler).proxy]) { 10 var names = Object.getOwnPropertyNames(p); 11 assertEq(names.length, 1); 12 assertEq(names[0], 'bar'); 13 } 14 15 var protoWithAB = Object.create(null, { 16 a: { 17 enumerable: true, 18 configurable: true 19 }, 20 b: { 21 enumerable: false, 22 configurable: true 23 } 24 }); 25 var objWithCD = Object.create(protoWithAB, { 26 c: { 27 enumerable: true, 28 configurable: true 29 }, 30 d: { 31 enumerable: true, 32 configurable: true 33 } 34 }); 35 36 handler = { ownKeys: () => [ 'c', 'e' ] }; 37 for (let p of [new Proxy(objWithCD, handler), Proxy.revocable(objWithCD, handler).proxy]) { 38 var names = Object.getOwnPropertyNames(p); 39 assertEq(names.length, 2); 40 assertEq(names[0], 'c'); 41 assertEq(names[1], 'e'); 42 }