Причина использования оператора new
состоит в том, чтобы гарантировать, что this
внутри конструктора ссылается на новый контекст, который поддерживает:
this.functionName = function(){...};
и разрешить использование оператора instanceof
:
function foo() {...}
var bar = new foo();
alert(bar instanceof foo);
Использование return {...}
внутри такого конструктора сводит на нет оба этих эффекта, поскольку this
не понадобится для такого шаблона, а instanceof
вернет false
.