From: Kevin Smith [[email protected]]

> I'm still not quite convinced that objects-as-maps make a truly isolated 
> namespace necessary, however.  I would be convinced by a code example showing 
> how a property of an object using arbitrary string keys could be 
> misinterpreted as a meta-level property.

> I'll try to think of one...

The hard part of producing such examples is that most of the meta-level 
properties are functions (e.g. iterator), and thus it's not trivially easy to 
produce an object from `JSON.parse`ing user input. But there are some 
meta-level properties that are not functions, namely @@isRegExp, @@toStringTag, 
and @@unscopables.

So let's say that we decided to use a non-isolated namespace of strings, 
instead of unique symbols. Thus, we would have `"std:isRegExp"`, 
`"std:toStringTag"`, and `"std:unscopeables"`. Well, then simple code like this:

```js
var requestBody = JSON.parse(req.body);
```

could end up getting a very weird object, if I POSTed the string

```
{
  "std:isRegExp": true,
  "std:toStringTag": "My Custom String Tag With Spaces and Punctuation!",
  "std:unscopeables": ["hasOwnProperty", "toString", "propertyIsEnumerable"]
}
```

to that HTTP endpoint.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to