<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>An assessor can produce data which is desired serialization, period. For instance, a setter might be used to enforce rules on valid values, which should still be serialized. A proxy could do this too, but nobody really wants to use proxies for everything.</div><div><br></div><div>On the other hand, certain assessor properties you would definitely not want to serialize, to avoid providing sensitive, unnecessary, or circular data to a serializer. So it's hard to pick the most sensible default. </div><div><br></div><div>I don't think built in accessors really matter much, because things like Array length becomes useless when serialized, but user defined accessors often aren't useless or undesirable to serialize (at least in data persistence libraries and similar things).</div><div><br></div><div>It's hard to produce a cohesive argument or example from a phone, though, I'll get back to this on another day.</div><div><br>On Dec 24, 2014, at 7:47 PM, Andrea Giammarchi <<a href="mailto:andrea.giammarchi@gmail.com">andrea.giammarchi@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr">Out of curiosity, which accessor, being a runtime info that once trapped in a static property looses its meaning, is commonly needed for JSON ?<div><br></div><div>I am just thinking about `Array` and the fact that thanks gosh the `length` is not in. What kind of logic you have in mind?</div><div><br></div><div>```js</div><div>// to fix the exception</div><div>// with ... a **non enumerable** method ;-)</div><div>class SomeCase {</div><div>  toJSON() {</div><div>    var o = Object.assign({}, this);</div><div>    o.accessor = this.accessor;</div><div>    return o;</div><div>  }</div><div>}</div><div>```</div><div><br></div><div>case solved in few lines and yet another method, the `toJSON` one, that nobody wants to show up anywhere in an enumerable way.</div><div><br></div><div>Best Regards</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 25, 2014 at 1:17 AM, Caitlin Potter <span dir="ltr"><<a href="mailto:caitpotter88@gmail.com" target="_blank">caitpotter88@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Supposing that methods were non-enumerable by default, would accessors be different, or also non-enumerable by default?<br>
<br>
In most cases, accessors would make sense to be enumerable, e.g. for JSON serialization, but that would be sort of inconsistent and confusing if the default were different from methods<br>
<br>
(Just thinking out loud)<br>
<div class="HOEnZb"><div class="h5"><br>
> On Dec 24, 2014, at 7:09 PM, Brendan Eich <<a href="mailto:brendan@mozilla.org">brendan@mozilla.org</a>> wrote:<br>
><br>
> Brendan Eich wrote:<br>
>> There's a confounding variable: the pain of ES6s meta-object APIs, in all respects.<br>
><br>
> I meant "ES5's" here, of course.<br>
><br>
> Agree with Jeremy, laziness is a programmer virtue and a part of human nature. People are not bothering where they don't know better, or do perhaps know enough but don't have time and cause to take the trouble. The trouble is due to the non-default nature of non-enumerability. Arguing from that past default to (still-future for a little while!) ES6 class's prototype methods being non-enumerable is circular, if you ignore the foolish-consistency argument (which I think we should, but I"m not dismissing here -- just noting that it isn't enough to avoid circularity because of the ES5's-painful-to-use confounder).<br>
><br>
> /be<br>
> _______________________________________________<br>
> es-discuss mailing list<br>
> <a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
> <a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</div></div></blockquote></div><br></div>
</div></blockquote></body></html>