Когда я должен автоматически создавать объект, даже если `new` забыто?

Допустим, у меня есть следующий конструктор объекта:

function Foo(bar) {
    this.bar = bar;
}

Если я запускаю функцию в глобальной области видимости безnew ключевое слово тогдаbar будет установлен в любом объемеFoo() называется в:

var foo = Foo(42);
console.log(bar); // 42
console.log(foo.bar); // ERROR

Так что моя идея сделать что-то вроде этого:

function Foo(bar) {
    if(!(this instanceof Foo)) {
        // return a Foo object
        return new Foo(bar);
    }
    this.bar = bar;
}

Таким образом, если я сделаюnew Foo(42) или же Foo(42)было бывсегда вернутьFoo объект.

ЭтоКогда-либо хорошая идея? Если да, то когда? Когда (и почему) было бы разумно избегать этой техники?

Ответы на вопрос(4)

Ваш ответ на вопрос