Sorry I got your intention wrong and glad your agreed. :) > On Dec 25, 2014, at 10:39 AM, Rick Waldron <waldron.r...@gmail.com> wrote: > > To be clear, the only conclusion to be drawn from my exercise was that there > isn't a broad pain being felt by all developers all the time, going out of > their way to explicitly define non-enumerable properties. My motivation > always begins at: how to evolve the language based on the most common > developer patterns. In the absence of a compelling hardship, I don't see the > benefit of changing the default definition semantics—but—as I my own > understanding evolves, I think I'm in agreement with Brendan and Yehuda (and > whoever else) that: enumerable in obj lit, non-enumerable in class body is > reasonable path forward. > > Rick > On Wed, Dec 24, 2014 at 9:21 PM Glen Huang <curvedm...@gmail.com > <mailto:curvedm...@gmail.com>> wrote: > Just my 2 cents: > > 1. Rick’s field test approach is epic. Encourage me to get my hands dirty. :) > > However, the conclusion I get from these tests is that not many developers > explicitly set things to be non-enumerable. This does not directly translate > to “many developers care about prototype properties being enumerable”. > > I agree with Andrea here that `hasOwnProperty` has to be taken into > consideration. Especially whether people use `hasOwnProperty` inside “for > in”. Because that’s what enumerability of class syntax will eventually > affect. Nothing else matters if I’m not wrong. (This seems to also be Allen’s > opinion) > > 2. Allen’s study addressed exactly that. > > Especially the "ENUMERATION WITH FOR…IN” chapter. And again, epic. :) > > The conclusion in the study is that not many people use “hasOwnProperty” > with “for in”. However, one thing I think is still missing is to examine that > what kinds of objects are being used with “for in”. For example, if this is > how they use “for in”: > > ``` > var defaults = { … }; > for (var key in defaults) { … } > ``` > > or > > ``` > var defaults = { … }; > var options = Object.create(defaults); > for (var key in options) { … } > ``` > > Then it should be totally fine if they don’t use “hasOwnProperty” and they > don’t adding things to Object.prototype. (I think whether they (or the libs > they use) add properties to Object.prototype should also be examined in this > case). > > Also “for in” over DOM objects should also be examined. Because enumerability > of class syntax doesn’t matter here even if they don’t use “hasOwnProperty”. > > So it pretty much comes down to this: > > Do many developers use “for in” over objects created by user created > constructors and don’t use “hasOwnProperty” when they do that. > > If the answer is “yes”, then default class syntax to non-enum is probably not > a good idea. Otherwise, it should be fine. > > I will do some tests to see if I can answer that question with some concrete > data. (probably is going to take some time, I don’t see reliable way of > testing that right now). > > > On Dec 25, 2014, at 8:56 AM, Brendan Eich <bren...@mozilla.org > > <mailto:bren...@mozilla.org>> wrote: > > > > Sorry, you can't use small-world reasoning about programming in the large, > > especially with JS on the web. for-in proliferated, before hasOwnProperty > > appeared in ES3. Even after, the burden was high enough, per that study > > Allen cited > > (http://munawarhafiz.com/research/jssurvey/GHB14-JSUsedParts.pdf > > <http://munawarhafiz.com/research/jssurvey/GHB14-JSUsedParts.pdf>). for-in > > ain't going away. > > > > If you are saying we should make class prototype methods non-enumerable in > > ES6, I agree. If you're saying it won't matter that they remain as drafted, > > enumerable, because everyone will stop using for-in. I don't buy it. If you > > are suggesting that for-in-based code won't be run on class prototypes, > > perhaps -- but that's a gamble. > > > > /be > > > > Gary Guo wrote: > >> Actually I believe that there will not be many cases that we need to use > >> for-in loop in ES6. In most cases enumerate through properties in the > >> prototype chain is not preferable. for-of Object.keys should be enough for > >> enumeration with own properties. If my assumption is correct, since we are > >> less likely to use legacy ways, we will be more able to make a change. > > _______________________________________________ > > es-discuss mailing list > > es-discuss@mozilla.org <mailto:es-discuss@mozilla.org> > > https://mail.mozilla.org/listinfo/es-discuss > > <https://mail.mozilla.org/listinfo/es-discuss> > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org <mailto:es-discuss@mozilla.org> > https://mail.mozilla.org/listinfo/es-discuss > <https://mail.mozilla.org/listinfo/es-discuss>
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss