// Assigning to an existing array element via a proxy with no set handler // calls the defineProperty handler. function test(arr) { var p = new Proxy(arr, { defineProperty(t, id, desc) { hits++; // ES6 draft rev 28 (2014 Oct 14) 9.1.9 step 5.e.i. // Since the property already exists, the system only changes // the value. desc is otherwise empty. assertEq(Object.getOwnPropertyNames(desc).join(","), "value"); assertEq(desc.value, "ponies"); return true; } }); var hits = 0; p[0] = "ponies"; assertEq(hits, 1); assertEq(arr[0], 123); } test([123]); test(new Int32Array([123]));