| // Return the names returned by the trap |
| var target = {}; |
| Object.defineProperty(target, 'foo', { |
| configurable: true |
| }); |
| |
| var handler = { ownKeys: () => [ 'bar' ] }; |
| |
| for (let p of [new Proxy(target, handler), Proxy.revocable(target, handler).proxy]) { |
| var names = Object.getOwnPropertyNames(p); |
| assertEq(names.length, 1); |
| assertEq(names[0], 'bar'); |
| } |
| |
| var protoWithAB = Object.create(null, { |
| a: { |
| enumerable: true, |
| configurable: true |
| }, |
| b: { |
| enumerable: false, |
| configurable: true |
| } |
| }); |
| var objWithCD = Object.create(protoWithAB, { |
| c: { |
| enumerable: true, |
| configurable: true |
| }, |
| d: { |
| enumerable: true, |
| configurable: true |
| } |
| }); |
| |
| handler = { ownKeys: () => [ 'c', 'e' ] }; |
| for (let p of [new Proxy(objWithCD, handler), Proxy.revocable(objWithCD, handler).proxy]) { |
| var names = Object.getOwnPropertyNames(p); |
| assertEq(names.length, 2); |
| assertEq(names[0], 'c'); |
| assertEq(names[1], 'e'); |
| } |