Какая разница в JavaScript между функцией-конструктором и функцией, возвращающей объект, который вызывается как конструктор?

Я знаю, что это не рекомендуемый способ сделать это, но если я объявлю следующие функции, а затем вызову их как конструкторы, какая будет разница (если таковая будет )между результирующими объектами ?

function Something() {
    this.foo = "bar";
}

function something2() {
    var that = {};
    that.foo = "bar";
    return that;
}

var x = new Something();
var y = new something2();
var z = something2();

. чем здесь будут отличаться x, yи z?

Разве something2не будет намного лучшим способом написания конструктора, поскольку независимо от того, используете ли вы newили нет, это не повлияет на результат функции?

Кстати, something2следует писать с большой буквы? (Я предполагаю, что нет, так как Крокфорд так непреклонен в использовании заглавных букв, поскольку функции будут загромождать глобальное пространство имен...)

11
задан zrajm 26 April 2012 в 06:44
поделиться