Si usa Dojo solo debe llamar a dojo.hitch() que hace casi exactamente lo que desea. Casi — porque se puede usar para empaquetar el contexto también. Sin embargo, su ejemplo es primero:
dojo.hitch(out, "hello")("world");
dojo.hitch(out, "hello", "world")();
Así como:
var A = {
sep: ", ",
out: function(a, b){ console.log(a + this.sep + b); }
};
// using functions in context
dojo.hitch(A, A.out, "hello")("world");
dojo.hitch(A, A.out, "hello", "world")();
// using names in context
dojo.hitch(A, "out", "hello")("world");
dojo.hitch(A, "out", "hello", "world")();
dojo.hitch() es la parte de la Base de Dojo, por lo que tan pronto como se haya incluido dojo.js que está ahí para tú.
Otro recurso general está disponible en el módulo dojox.lang.functional.curry (documentado en Functional fun in JavaScript with Dojo — basta con mirar en esta página para ver "curry"). Específicamente, es posible que desee ver curry() y parcial().
curry() acumula argumentos (como en su ejemplo) pero con una diferencia: tan pronto como se cumple la arit, llama a la función que devuelve el valor. La implementación de su ejemplo:
df.curry(out)("hello")("world");
df.curry(out)("hello", "world");
en cuenta que la última línea no tiene "()" al final — se le llama de forma automática.
parcial() permite sustituir argumentos al azar:
df.partial(out, df.arg, "world")("hello");
Recomiendo la función 'curry' de [Lodash] (http://lodash.com/docs#curry). Por cierto, recomiendo toda la biblioteca, es muy útil. –