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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage