semantics-04.js (368B)
1 // Giving an Array an own .iterator property affects for-of. 2 3 load(libdir + "asserts.js"); 4 load(libdir + "iteration.js"); 5 6 var a = []; 7 a[Symbol.iterator] = function* () { 8 yield 'o'; 9 yield 'k'; 10 }; 11 var s = ''; 12 for (var v of a) 13 s += v; 14 assertEq(s, 'ok'); 15 16 a[Symbol.iterator] = undefined; 17 assertThrowsInstanceOf(function () { for (var v of a) ; }, TypeError);