JavaScript новый объект (функция) против линейного вызова
-
24-09-2019 - |
Вопрос
Есть ли какие-либо соображения для определения, что является лучшей практикой для создания объекта с частными членами?
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
что чем выше, тем лучше