Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create an empty object in JavaScript with {} or new Object()?

There are two different ways to create an empty object in JavaScript:

var objectA = {} var objectB = new Object() 

Is there any difference in how the script engine handles them? Is there any reason to use one over the other?

Similarly it is also possible to create an empty array using different syntax:

var arrayA = [] var arrayB = new Array() 
like image 318
Jonas Pegerfalk Avatar asked Oct 30 '08 19:10

Jonas Pegerfalk


1 Answers

Objects

There is no benefit to using new Object(); - whereas {}; can make your code more compact, and more readable.

For defining empty objects they're technically the same. The {} syntax is shorter, neater (less Java-ish), and allows you to instantly populate the object inline - like so:

var myObject = {         title:  'Frog',         url:    '/img/picture.jpg',         width:  300,         height: 200       }; 

Arrays

For arrays, there's similarly almost no benefit to ever using new Array(); over []; - with one minor exception:

var emptyArray = new Array(100); 

creates a 100 item long array with all slots containing undefined - which may be nice/useful in certain situations (such as (new Array(9)).join('Na-Na ') + 'Batman!').

My recommendation

  1. Never use new Object(); - it's clunkier than {}; and looks silly.
  2. Always use []; - except when you need to quickly create an "empty" array with a predefined length.
like image 167
Már Örlygsson Avatar answered Sep 23 '22 22:09

Már Örlygsson