Прежде всего, var o = {};
и var o = new Array();
- это не одно и то же.Первый инициализирует объект, второй массив.var o = {};
и var o = new Object();
эквивалентны.
Теперь о производительности использования литерала объекта вместо добавления свойств после.Какой из них самый быстрый?Ответ в том, что нам все равно, и вам тоже не следует. Если разница в производительности, она будет настолько мала, что никогда не повлияет, даже если вы создадите 1 миллион объектов одновременно, что вряд ли когда-либо произойдет.
Этоназывается преждевременной оптимизации и является проклятием многих программистов среднего уровня.Не беспокойтесь об оптимизации, если у вас не возникнут проблемы с производительностью.Затем вы используете профилировщик, чтобы обнаружить узкое место и устранить его.Просто беспокойтесь о создании своего приложения.
Ради полноты, вот тест, который я запустил на jsperf .В моем браузере, Chrome 15, инициализация литерала объекта была на 53% быстрее.Вау, 53%, это огромно, верно?Если вы не наведете указатель мыши на всплывающую подсказку для теста, который использует свойства после инициализации, вы увидите, что он говорит что-то вроде
Выполнено 681 285 раз за 0,077 секунды.
Ваши цифры могут отличаться, но вы сможете заметить, что метод, который считается самым медленным, все еще идет довольно быстро по любым стандартам.Я думаю, можно с уверенностью сказать, что оба достаточно быстры для любой цели.Просто используйте тот, который вы предпочитаете.