Wann sollte ich automatisch ein Objekt erstellen, auch wenn "neu" vergessen wurde?
Angenommen, ich habe den folgenden Objektkonstruktor:
function Foo(bar) {
this.bar = bar;
}
Wenn ich die Funktion im globalen Bereich ohne die ausführenew
Stichwort dannbar
wird in welchem Umfang auch immer eingestelltFoo()
heißt in:
var foo = Foo(42);
console.log(bar); // 42
console.log(foo.bar); // ERROR
Meine Idee ist also, so etwas zu machen:
function Foo(bar) {
if(!(this instanceof Foo)) {
// return a Foo object
return new Foo(bar);
}
this.bar = bar;
}
Auf diese Weise, wenn ich es tuenew Foo(42)
oder Foo(42)
, es würdeimmer zurück aFoo
Objekt.
Ist dasje eine gute Idee? Wenn ja wann Wann (und warum) wäre es ratsam, diese Technik zu vermeiden?