iterator-indices-5.js (745B)
1 function bar(o, trigger) { 2 with ({}) {} 3 if (trigger) { 4 Object.defineProperty(o, "y", { 5 get() { return 3; } 6 }); 7 } 8 } 9 10 function foo(o, trigger) { 11 var result; 12 for (var key in o) { 13 result = o[key]; 14 bar(o, trigger); 15 } 16 return result; 17 } 18 19 function foo2(o, trigger) { 20 var result; 21 var keys = Object.keys(o); 22 for (var i = 0; i < keys.length; i++) { 23 var key = keys[i]; 24 result = o[key]; 25 bar(o, trigger); 26 } 27 return result; 28 } 29 30 var arr = []; 31 for (var i = 0; i < 10; i++) { 32 arr.push({["x" + i]: 0, y: 0}); 33 } 34 35 with ({}) {} 36 for (var i = 0; i < 1000; i++) { 37 for (var o of arr) { 38 foo(o, false) 39 foo2(o, false) 40 } 41 } 42 print(foo(arr[0], true)); 43 print(foo2(arr[0], true));