ADVANCED mode requires property definitions for external properties. There aren't ES6 definitions in the default externs for Map or other new features. On Dec 17, 2013 10:59 AM, "Andrea Giammarchi" <[email protected]> wrote:
> not shold but **does** work ;-) > > Although I agree that specific thing is very inconvenient in some case and > minifiers knows this too. > > As example, google closure compiler fails with this script in two ways > > ```javascript > var wm = new WeakMap; > wm.delete(Object); > ``` > > Simple minification does the right, resulting in an IE8 safe script such` > wm['delete'](Object)` thing but it throws a warning: > ``` > JSC_INVALID_ES3_PROP_NAME: Keywords and reserved words are not allowed as > unquoted property names in older versions of JavaScript. If you are > targeting newer versions of JavaScript, set the appropriate language_in > option. at line 2 character 3 > wm.delete(Object); > ``` > > While in advance mode and no special flags it just breaks resulting in: > > `(new WeakMap).a(Object);` > > YUI is not even able to minify that script ... in few words developers > tools do not make the usage of these methods in ES6 collections easy to > write and use for developers themselves so tey have to remember those > square brackets ... pretty silly if you ask me ^_^ > > ES6#del() or remove() would have been way easier solution ... choosing a > reserved word was OKish, but was also asking for few extra gotchas/troubles > nobody really needed/wanted. > > The good part is: nobody will care about IE8 anymore ... and pretty > soon!!! Still tools should be smarter about this issue > > Best Regards > > > > > > > On Tue, Dec 17, 2013 at 1:38 AM, David Bruant <[email protected]> wrote: > >> Le 17/12/2013 10:19, Shijun He a écrit : >> >> There are some methods using reserved word "delete", such as >>> Map.prototype.delete, Set.prototype.delete... Though it is allowed since >>> ES5, I think we'd better avoid it because it cause es6 shim solution fail >>> on legacy browsers such as IE8. >>> >> Note that there is a warning [1] (maybe arguably). Among other >> incompatibilities, "size" is a getter too. >> >> myMap.delete fails, but myMap['delete'] should work. >> >> David >> >> [1] https://github.com/paulmillr/es6-shim/blob/ >> 4322eae20b6f8a7769fa1d89ac207ef8ee9e1ee4/es6-shim.js#L662 >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> > > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

