Когда я должен автоматически создавать объект, даже если `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
объект.
ЭтоКогда-либо хорошая идея? Если да, то когда? Когда (и почему) было бы разумно избегать этой техники?