| // Assigning to a missing array element (a hole) via a proxy with no set handler |
| // calls the defineProperty handler. |
| |
| function test(id) { |
| var arr = [, 1, 2, 3]; |
| var p = new Proxy(arr, { |
| defineProperty(t, id, desc) { |
| hits++; |
| assertEq(desc.value, "ponies"); |
| assertEq(desc.enumerable, true); |
| assertEq(desc.configurable, true); |
| assertEq(desc.writable, true); |
| return true; |
| } |
| }); |
| var hits = 0; |
| p[id] = "ponies"; |
| assertEq(hits, 1); |
| assertEq(id in arr, false); |
| assertEq(arr.length, 4); |
| } |
| |
| test(0); |
| test(4); |
| test("str"); |