Allen Wirfs-Brock (2013-07-17T00:25:15.000Z)
domenic at domenicdenicola.com (2013-07-19T15:29:40.457Z)
On Jul 16, 2013, at 4:41 PM, Mark S. Miller wrote: > I like the general idea. But when actually called simply as a function, this would be unpleasant. Understanding that any ES5 behavior will be a compromise to prepare the ground for ES6, I suggest this variant: > > ```js > function MapConstructor() { > if (%_IsConstructCall()) { > %MapInitialize(this); > } else if (this === void 0) { > ``` this test isn't sufficient is you really want to support constructors as callable factories. Consider an namespace object (or a module) such as: ```js let ES6 = {Map, WeakMap, Set}; ES6.Map(); ``` > I already have a lot of code that simply calls WeakMap() without saying "new". I suspect that others will too by the time they see v8's new built-in WeakMaps. We need to discourage leaving out the new, rather than trying to preserve the small amount (in terms of web scale) of existing code that uses Map/Set/WeakMap as callable factories.