Esistono diversi modi per raggiungere lo stesso endpoint in JS, ad esempio:
(function (foo, bar) {
return {run: function () {return foo(bar);}};
} (foo, bar));
(function (foo, bar) {
return (function(foo, bar) { return {run: function () { return foo(bar); }}} (foo, bar))
} (foo, bar))
(function (foo, bar) {
var Fizz = function (foo, bar) { this.run = function () { return foo(bar); }; };
return new Fizz(foo, bar)
} (foo, bar))
Ora per questi, so che una differenza è che il prototipo nel terzo caso per l'oggetto restituito sarebbe diverso, ma a parte questo, tutti e tre i percorsi portano a un oggetto che fornisce la stessa API. E dal momento che Javascript è un linguaggio dattiloscritto, la cosa è solitamente definita dal suo comportamento.
Ci sono altre implicazioni nello scegliere un approccio dei tre che sto ignorando?