I think historically `Array`, `Function`, and `Object` can be used with or without `new` and the result is exactly the same ... since, about, ever.
Agreed if that's actually indeed the case, we could have just one definition for those 3 constructors (not just Object) Regards On Fri, Jun 12, 2015 at 10:19 PM, Benjamin Gruenaum <benjami...@gmail.com> wrote: > Ok, so I gave this a few hours in the open. > > So, I'm looking at the ES5 specification (also checked the current ES > draft which is similar) at the definition of what new Object and Object do. > To my surprise: > > - `new Object` describes a whole algorithm of how the object constructor > works - treating what happens with different kinds of values. Basically > calls `ToObject` on non objects - identity on objects and builds on null > and undefined. > - `Object` has a special first step for null and undefined where it > builds an object and then calls `ToObject` on primitives and identity on > objects. > > After reading the description a few times - they seem identical. However, > clearly from the spec they do *something* different. For example in Array - > calling new Array is specified as the function call Array(…) is equivalent > to the object creation expression new Array(…) with the same arguments.` > > The only difference I've been able to identify with the help of a friend > is that the behaviour can be different on host objects. Where `Object` must > return the same host object and `new Object` _may_ return the same host > object. > > I've taken a look at the ES3 specification and it too uses the same > definition so I suspect this is something that has been there for a long > time. > > - Why are `Object` and `new Object` specified differently? > - If there is no actual reason, can the definition be simplified for the > next version of the spec? (I think simplifying the spec is important and > possibly underrated) > > Sorry if I'm missing something obvious. > > Originally asked on Stack Overflow - > http://stackoverflow.com/q/30801497/1348195 > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss