| function test() { |
| |
| var symbol = Symbol("test"); |
| var proxy = new Proxy({}, { |
| getOwnPropertyDescriptor(t, n) { |
| // Required to prevent Object.keys() from discarding results |
| return { |
| enumerable: true, |
| configurable: true |
| }; |
| }, |
| ownKeys: function (t) { |
| return ["A", "A", "0", "0", symbol, symbol]; |
| } |
| }); |
| var keys = Object.keys(proxy); |
| var names = Object.getOwnPropertyNames(proxy); |
| var symbols = Object.getOwnPropertySymbols(proxy); |
| |
| if (keys.length === 4 && keys[0] === keys[1] && keys[2] === keys[3] && |
| keys[0] === "A" && keys[2] === "0" && |
| names.length === 4 && names[0] === names[1] && names[2] === names[3] && |
| names[0] === "A" && names[2] === "0" && |
| symbols.length === 2 && symbols[0] === symbols[1] && symbols[0] === symbol) |
| return true; |
| return false; |
| |
| } |
| |
| if (!test()) |
| throw new Error("Test failed"); |
| |