Since symbols are values, not objects, they are created by a plain function call to Symbol
, not by invoking new
on it. In the version of Chrome you are using, new Symbol
gives you a wrapper object for such a value (i.e., you can get the actual symbol by invoking .valueOf
on the result).
Since this is a common pitfall, the ES6 draft spec recently changed to disallow constructor invocation of Symbol
altogether. That is, you already get an exception on the first line of your code. This change has already been implemented in V8, but hasn't made it into Chrome yet.