// vim: set ts=8 sts=4 et sw=4 tw=99: function f() { return [[], [], [], []]; } function setelem(obj, key, val) { obj[key] = val; } // Generate IC setelem([], 0, "hi"); setelem([], 0, "hi"); // Get some arrays pre-indexing. var arrays = f(); // Do bad stuff. Object.defineProperty(Object.prototype, "1", { set: function (v) { this.kettle = v; } }); var k = arrays[0]; setelem(k, 1, 13); assertEq(k.kettle, 13); assertEq(k.hasOwnProperty("1"), false); Object.defineProperty(Array.prototype, "2", { set: function (v) { this.pot = v; } }); k = arrays[1]; setelem(k, 2, "yam"); assertEq(k.pot, "yam"); gc(); // make sure this reset okay. setelem([], 0, "hi"); setelem([], 0, "hi");