Новый объект (функция) JavaScript против встроенного вызова - PullRequest
7 голосов
/ 06 апреля 2010

Есть ли какие-то соображения, чтобы определить, какой метод лучше всего создавать объекты с закрытыми членами?

var object = new function () { 
   var private = "private variable";
   return {
       method : function () { 
           ..dosomething with private;
       }
   }
}

VS

var object = function () {
 ...
}();

Какова разница между использованием здесь NEW и простым вызовом функции сразу после того, как мы ее определили?

Ответы [ 3 ]

9 голосов
/ 06 апреля 2010

Оператор new вызывает функцию, как конструктор Функция .

Я видел этот шаблон раньше, но я не вижу никаких преимуществ его использования.

Цель оператора new - создать объект (значение this внутри конструктора), задать правильное внутреннее свойство [[Prototype]], построить цепочку прототипов и реализовать наследование. (подробности см. в операции [[Construct]]).

Я бы рекомендовал вам использовать шаблон inline invocation .

1 голос
/ 21 октября 2013

Эта ссылка предоставляет статистику, которая также подтверждает, что встроенный шаблон вызова лучше.

Обратите внимание, что измерение в operations per second, чем выше, тем лучше

1 голос
/ 06 апреля 2010

Если вы используете функции в качестве обработчиков событий, вы можете получить утечки памяти. Взгляните на некоторые из статей

...