On May 31, 2012, at 1:37 AM, gaz Heyes wrote:

> On 30 May 2012 14:52, Brendan Eich <[email protected]> wrote:
> Felix Böhm wrote:
> Okay, fair point. But JSON.parse should do what it's name says: Parse JSON. 
> Ignoring keys is not an option.
> JSON.parse must not treat __proto__ specially, per ES5. What's the problem 
> you see?
> 
> __proto__ can remove all methods for an object, this could cause a whole 
> block of code to fail when using a property from the JSON object. For example 
> using valueOf/toString with any property that has a null proto. 
> 
> x={y:{__proto__:null}};
> x=x.y+''; // I'm gonna bail because I have no toString  

Yes, but:

x=JSON.parse{"{y:{__proto__:null}}"}
console.log(x.y+'');  //outputs the string "null"

JSON.parse is specified as  to not trigger any magic __proto__ behavior when 
building its object tree.  In the above case it simply defines a own property 
named "__proto__" whose value is null.

Allen


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

Reply via email to