views:

149

answers:

1

In JavaScript, what's the difference between

var x = Object();

and

var x = new Object();

?

+7  A: 

This is pulled directly from the ECMAScript specification:

15.2.1 The Object Constructor Called as a Function

When Object is called as a function rather than as a constructor, it performs a type conversion.

15.2.1.1 Object ( [ value ] )

When the Object function is called with no arguments or with one argument value, the following steps are taken:

  1. If value is null, undefined or not supplied, create and return a new Object object exactly as if the standard built-in Object constructor had been called with the same arguments (15.2.2.1).

    In Short: new Object([ value ])

  2. Return ToObject(value).

Notes:

[ ] Is A common way to mark a parameter as optional.

ToObject Is a very simple operation that is defined in section 9.9.

ChaosPandion
So it called as a function with no arguments what does it do? Convert `undefined` to an object?
Skilldrick
It simply returns the equivalent of calling `new Object()`.
ChaosPandion
@Skilldrick: It would "create and return a new Object object exactly as if the standard built-in Object constructor had been called with the same arguments." So it would be the same as simply saying `new Object()`.
musicfreak
Sorry, I completely misread that - ignore my comment :P
Skilldrick
So there is no difference between `Object()` and `new Object()`?
jigfox
@Jens - The final result is the same. The only difference being a layer of redirection to the internal method **Construct**.
ChaosPandion