Создание объекта с новой функцией () {} против вызова функции с помощью (function () {}) () - Производительность? - PullRequest
0 голосов
/ 22 июня 2011

`новая функция ()` в нижнем регистре "f" в JavaScript

Моя интуиция говорит, что использование нового ключевого слова будет медленнее. Есть ли заметная польза от использования любого из этих методов?

Ответы [ 3 ]

1 голос
/ 22 июня 2011

Я думаю, что форма конструктора функции (new function() { }) будет быстрее, чем возвращение литерала объекта в замыкании ((function(){ return {}; })()), потому что последний, кажется, выполняет немного больше работы, чем первый.

Однако, похоже, я ошибаюсь, по крайней мере, для пары современных движков JavaScript. Это сравнение jsPerf показывает, что форма литерала / замыкания значительно быстрее как в Chrome, так и в Firefox.

В конечном счете, я думаю, что правильность кода и ясность намерений программиставажнее, чем такая тривиальная оптимизация (которая в любом случае, вероятно, сильно различается в реальных движках JavaScript).

1 голос
/ 22 июня 2011

Это может замедлить первоначальное создание объекта, что, скорее всего, неизмеримо.

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

0 голосов
/ 22 июня 2011

Полагаю, единственное преимущество использования new - если вам нравится синтаксис

this.myfunct = function...

Если бы вы сделали это без new, вы бызагрязняет глобальное пространство имен

, но, кроме этого, на самом деле нет никакой разницы.

Если скорость беспокоит вас, то, что jsperf увеличивает ее на одну миллионную долю секунды, если вы делаете одинмиллион IIFEs, то вы делаете что-то ...

...