Rick Waldron (2014-06-05T23:08:49.000Z)
domenic at domenicdenicola.com (2014-06-10T19:15:44.432Z)
On Thu, Jun 5, 2014 at 6:42 PM, Nicholas C. Zakas < standards at nczconsulting.com> wrote: > I wrote this blog post about some of the pain points I'm dealing with and > dreams of how ES7 might be able to address them: > > http://www.nczonline.net/blog/2014/06/03/my-ecmascript-7-wishlist/ > > A short overview in lieu of posting the whole article here: > > * `Array.prototype.first()`, `Array.prototype.last()` - return the first > and last items, respectively. > Check out Till's response to the previous thread about first and last: https://mail.mozilla.org/pipermail/es-discuss/2014-May/037158.html > * `Array.prototype.isEmpty()` - return true when empty (would also be nice > on strings, maps, etc.). > +1 > * `Function.empty` - a standard empty function that can be used when you > just want an empty function (IMHO, it indicates intent much better than > other options toda). > +1 > * Custom descriptor attributes - David mentioned this likely will never > happen, which makes me sad. Maybe the decorators proposal solves this use > case. > The Proxy security issue: http://esdiscuss.org/topic/object-getownpropertydescriptor-can-return-just-about-anything I had hoped that a "black list" of writable, configurable, enumerable properties would suffice: http://esdiscuss.org/topic/object-getownpropertydescriptor-can-return-just-about-anything#content-14 but I there is a discussion around some form of custom meta properties. > * `Object.deepPreventExtensions()`, `Object.deepSeal()`, > `Object.deepFreeze()` - deep versions of `Object.preventExtensions()`, et > al. > Does "deep" mean that a Map instance's [[MapData]] is frozen if deepFreeze is called on a ? eg. what happens here: ```js var m = Object.deepFreeze(new Map()); m.set(1, 1); ``` In your blog it mentions the silent failure in non-strict mode, I suspect that would still have to apply to these additions for semantic consistency. > * `Object.preventUndeclaredGet()` - change an object's behavior to throw > an error if you try to read from a property that doesn't exist (instead of > returning `undefine`). > This can be achieved with Proxy right, or is that too cumbersome? > * Lightweight traits - simple syntax sugar for object literals and classes > to facilitate mixins. +1