WeakMap-constructor-iterable.js (547B)
1 // The argument to WeakMap can be a iterable object. 2 3 load(libdir + "iteration.js"); 4 5 var k1 = {}; 6 var v1 = 42; 7 var k2 = {}; 8 var v2 = 43; 9 var k3 = {}; 10 11 var done = false; 12 13 var iterable = {}; 14 iterable[Symbol.iterator] = function*() { 15 yield [k1, v1]; 16 yield [k2, v2]; 17 done = true; 18 }; 19 var m = new WeakMap(iterable); 20 21 assertEq(done, true); // the constructor consumes the argument 22 assertEq(m.has(k1), true); 23 assertEq(m.has(k2), true); 24 assertEq(m.has(k3), false); 25 assertEq(m.get(k1), v1); 26 assertEq(m.get(k2), v2); 27 assertEq(m.get(k3), undefined);