non-extensible-elements8.js (1041B)
1 function testSealNonExtensibleArray() { 2 var obj = Object.preventExtensions([0]); 3 var desc = {value: 0, writable: true, enumerable: true, configurable: true}; 4 5 var errorAt = -1; 6 var N = 100; 7 8 for (var i = 0; i <= N; ++i) { 9 if (i === N) { 10 Object.seal(obj); 11 } 12 try { 13 Object.defineProperty(obj, 0, desc); 14 } catch { 15 errorAt = i; 16 } 17 } 18 assertEq(errorAt, N); 19 } 20 for (var i = 0; i < 15; i++) 21 testSealNonExtensibleArray(); 22 23 function testSealNonExtensibleObject() { 24 var obj = Object.preventExtensions({0:1}); 25 var desc = {value: 0, writable: true, enumerable: true, configurable: true}; 26 27 var errorAt = -1; 28 var N = 100; 29 30 for (var i = 0; i <= N; ++i) { 31 if (i === N) { 32 Object.seal(obj); 33 } 34 try { 35 Object.defineProperty(obj, 0, desc); 36 } catch { 37 errorAt = i; 38 } 39 } 40 assertEq(errorAt, N); 41 } 42 for (var i = 0; i < 15; i++) 43 testSealNonExtensibleObject();