<div dir="ltr">In 9.1.11. it's specified that the iterator returned by the [[Enumerate]] method iterates over String-valued keys. But the informative definition at the end of 9.1.11. is based on whatever is returned by calling Reflect.enumerate on the prototype of the current object, assuming that there is such a prototype. <div><br></div><div>If the prototype is a proxy and it's enumerate trap returns an iterator that yields other kind of values than strings, then our original object's [[Enumerate]] method will give us non-string keys as well. And they can be any kind of values, not only symbols.</div></div>