JavaScript новый объект (функция) против линейного вызова

StackOverflow https://stackoverflow.com/questions/2581565

Вопрос

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

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

ПРОТИВ

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top