Concepteur d'objets Javascript versus objet littéral

Duplication possible:
Création d'objets – nouvelle notation d'objet ou d'objet?
Notation littérale VS. Constructeur pour créer des objets en JavaScript

Je passe dans mon premier tutoriel Javascript.

Je viens de trouver deux façons de créer un objet JS.

var person = new Object(); person.name = "Tom"; person.age = "17"; 

et

 var person = {}; person.name = "Tom"; person.name = "17" 

Toute différence entre ces deux façons de créer des objets? Puisque la seconde semble plus simple, pouvons-nous toujours l'utiliser sous n'importe quelle condition?

Non seulement la deuxième syntaxe est plus facile à lire et non seulement elle fonctionnera sous n'importe quelle condition, mais la première syntaxe pourrait ne pas fonctionner dans toutes les conditions:

 function Object() { // Oh crap, we have redefined Object! return []; // return an array because we are EVIL } var person = new Object(); // not what we think it is 

Mais {} , étant une construction syntaxique, est à l'abri de ces ruses maléfiques.

En outre, la notation littérale de l'objet peut être partiellement optimisée au moment de l'analyse, puisqu'il n'existe qu'un seul type d'objet qui pourrait être créé. Cela peut entraîner une augmentation minime des performances.