<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">There was some heated debate on twitter too just yesterday:<br class=""><a href="https://twitter.com/domenic/status/547146484479561730" class="">https://twitter.com/domenic/status/547146484479561730</a><div class=""><br class=""></div><div class="">Just wondering, is es6 class frozen? In those tweets Brendan proposed "enum in obj lit, not in class”. Looks like class is still open for modification?</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 24, 2014, at 9:17 AM, Rick Waldron <<a href="mailto:waldron.rick@gmail.com" class="">waldron.rick@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><br class=""><br class=""><div class="gmail_quote">On Tue Dec 23 2014 at 7:35:44 PM Andrea Giammarchi <<a href="mailto:andrea.giammarchi@gmail.com" class="">andrea.giammarchi@gmail.com</a>> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class="">Dear Santa,<br class=""></div><div class="">  I wish since ES3 era that properties defined on a prototype are by default **not** enumerable. </div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class=""><br class=""></div><div class="">By any chance we can make this happen in ES6 classes?</div></div></blockquote><div class=""><br class=""></div><div class="">ES6 is done, properties of user created prototypes are enumerable by default. They can be made non-enumerable if you want them that way, but doing so by default is inconsistent with constructor function + prototype definition. </div><div class=""> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class=""><br class=""></div><div class="">Or better ... why would anyone expect or want them to be enumerable?</div></div></blockquote><div class=""><br class=""></div><div class="">- Consistency with constructor function + prototype definition (severe refactoring hazard).</div><div class="">- Pretty useful for dynamically creating collection APIs, eg: </div><div class=""><br class=""></div><div class=""><div class="">  Object.keys(Servo.prototype).forEach(function(method) {</div><div class="">    // Create `Servos` collection class wrappers for each method</div><div class="">    Servos.prototype[method] = function() {</div><div class="">      var args = [].slice.call(arguments);</div><div class="">      this.each(function(servo) {<br class=""></div><div class="">        Servo.prototype[method].apply(servo, args);</div><div class="">      });</div><div class="">      return this;<br class=""></div><div class="">    };</div><div class="">  });</div></div><div class=""><br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class=""><br class=""></div><div class="">To define a `class` is a very explicit intent, I believe having those definitions non enumerable would be a preferred option for majority of developers that have been doomed in `for/in` since kinda ever before enumerable was not configurable.</div><div class=""><br class=""></div><div class="">All default methods and properties in native prototypes are **not** enumerable, why does it have to be so inconsistent with userland?</div></div></blockquote><div class=""><br class=""></div><div class="">The widely understood, wholly well-known semantics: </div><div class=""><br class=""></div><div class="">- Properties of built-in prototype objects are non-enumerable</div><div class="">- Properties of user defined prototype objects are enumerable by default, but can be made non-enumerable if desired.</div><div class=""><br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class=""><br class=""></div><div class="">You also know ES6 is the only window we have 'cause after that it will be a breaking change.</div></div></blockquote><div class=""><br class=""></div><div class="">No: any future annotation syntax must allow for defining writable, configurable and enumerable attributes.</div><div class=""><br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class=""><div class=""><br class=""></div><div class="">Thank you at least for any sort of extra/concrete clarification about this choice.</div></div></blockquote><div class=""><br class=""></div><div class="">- <a href="https://github.com/rwaldron/tc39-notes/blob/master/es6/2012-09/sept-18.md#concise-method-definition-revisited" class="">https://github.com/rwaldron/tc39-notes/blob/master/es6/2012-09/sept-18.md#concise-method-definition-revisited</a><br class=""></div><div class="">- <a href="https://github.com/rwaldron/tc39-notes/blob/c61f48cea5f2339a1ec65ca89827c8cff170779b/es6/2014-01/jan-28.md#concise-methods-and-enumerability" class="">https://github.com/rwaldron/tc39-notes/blob/c61f48cea5f2339a1ec65ca89827c8cff170779b/es6/2014-01/jan-28.md#concise-methods-and-enumerability</a><br class=""></div><div class="">- <a href="https://esdiscuss.org/topic/enumerability#content-23" class="">https://esdiscuss.org/topic/enumerability#content-23</a><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">The consistency argument has won every time this conversation is brought up. There are ways to get what you want in the future (probably even in ES7), but changing the default is not the solution. </div><div class=""><br class=""></div><div class="">Rick</div></div>
_______________________________________________<br class="">es-discuss mailing list<br class=""><a href="mailto:es-discuss@mozilla.org" class="">es-discuss@mozilla.org</a><br class="">https://mail.mozilla.org/listinfo/es-discuss<br class=""></div></blockquote></div><br class=""></div></body></html>