<div dir="ltr">On Tue, May 21, 2013 at 12:56 AM, Brendan Eich <span dir="ltr"><<a href="mailto:brendan@mozilla.com" target="_blank">brendan@mozilla.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">Andrea Giammarchi wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
can I also suggest to analyze, if there's still any doubt left on a method VS a property yet, this piece of code if not highlighted before?<br>
</blockquote>
<br></div>
I do not understand what you mean here.<br><br></blockquote><div> </div></div>I mean that JSON, as part of the specs, needs to consider that "magic" property case, resulting into an `instanceof Object`, with an enumerable property that will show up in a `for/in` loop but it's not able to mutate the object.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">```</div><div class="gmail_extra"><div class="gmail_extra">var obj = JSON.parse('{"__proto__":[]}');</div><div class="gmail_extra">alert(obj instanceof Array); // false</div>
<div class="gmail_extra">alert(obj["__proto__"] instanceof Array); // true</div><div class="gmail_extra">obj["__proto__"] = obj["__proto__"];</div><div class="gmail_extra">// or</div><div class="gmail_extra">
for (var key in obj) {</div><div class="gmail_extra">  obj[key] = obj[key];</div><div class="gmail_extra">  // could be a generic</div><div class="gmail_extra">  // clone operation</div><div class="gmail_extra">}</div><div class="gmail_extra">
alert(obj instanceof Array); // false</div><div class="gmail_extra">alert(obj instanceof Object); // true</div></div><div class="gmail_extra">```</div><div class="gmail_extra"><br></div><div class="gmail_extra" style>Above kind of object is "not perfectly described in current specs" and is different from any other where the `__proto__` is the inherited and not own property.</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>This is what developers should be aware of, that `__proto__` might not be what they think is while `Object.setPrototypeOf(obj, proto):obj` will always work as expected, as well as `Object.getPrototypeOf(obj):proto`</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>All I am saying is that I understood reasons `__proto__` is there but I hope there won't be any step backward about `Object.setPrototypeOf`</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>All the best and looking forward to read the notes.</div><div class="gmail_extra"><br></div></div>