function A() {}; A.prototype = []; function B() {}; B.prototype = new A(); function C() {}; C.prototype = new B(); function D() {}; D.prototype = new C(); function E() {}; E.prototype = new D(); function f() { var o = new B(); for (var i=0; i<10; i++) o[i] = i; var expected = '{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}'; assertEq(JSON.stringify(o), expected); var o = new A(); for (var i=0; i<10; i++) o[i] = i; assertEq(JSON.stringify(o), expected); var o = new D(); for (var i=0; i<10; i++) o[i] = i; assertEq(JSON.stringify(o), expected); var o = new E(); for (var i=0; i<10; i++) o[i] = i; assertEq(JSON.stringify(o), expected); } f();