symbols.js (746B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/licenses/publicdomain/ */ 3 4 load(libdir + "asserts.js"); 5 6 var s = new Set; 7 8 // Symbols can be stored in Sets. 9 var sym = Symbol(); 10 s.add(sym); 11 assertEq(s.has(sym), true); 12 assertEq(s.has(Symbol()), false); 13 assertEq([...s][0], sym); 14 s.add(sym); 15 assertEq(s.has(sym), true); 16 assertEq(s.size, 1); 17 s.delete(sym); 18 assertEq(s.has(sym), false); 19 assertEq(s.size, 0); 20 21 // Symbols returned by Symbol.for() can be in Sets. 22 var str = "how much wood would a woodchuck chuck if a woodchuck could chuck wood"; 23 var s2 = "how much wood would a woodchuck chuck if could"; 24 var arr = str.split(" ").map(Symbol.for); 25 s = new Set(arr); 26 assertDeepEq([...s], s2.split(" ").map(Symbol.for));