Конструктор объектов Javascript и объектный литерал

Возможный дубликат:
создание объектов - запись в виде нового объекта или объекта? Буквальная нотация VS. конструктор для создания объектов в JavaScript

Я просматриваю свой первый Javascript-учебник.

Я просто нашел два способа создания объекта JS.

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

и

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

Любая разница между этими двумя способами создания объекта? Поскольку второй выглядит проще, можем ли мы всегда использовать его при любых условиях?

Ответы

Ответ 1

Легче читать второй синтаксис, и он не только будет работать при любых условиях, но первый синтаксис может не работать при любых условиях:

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

Но {}, будучи синтаксической конструкцией, невосприимчив к такому злобному обману.

Кроме того, объектная литературная нотация может быть частично оптимизирована во время разбора, поскольку в конце концов существует только один тип объекта, который может быть создан. Это может привести к незначительному увеличению производительности.