Jeśli używasz Dojo, po prostu wywołaj funkcję dojo.hitch(), która robi prawie dokładnie to, co chcesz. Niemal —, ponieważ można go również wykorzystać do spakowania kontekstu. Ale Twój przykład jest pierwszy:
dojo.hitch(out, "hello")("world");
dojo.hitch(out, "hello", "world")();
Jak również:
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() jest częścią Dojo Bazy, tak szybko, jak jest to ujęte dojo.js tam ty.
Inny ogólny obiekt jest dostępny w module dojox.lang.functional.curry (udokumentowanym w Functional fun in JavaScript with Dojo — po prostu spójrz na tę stronę dla "curry"). W szczególności możesz przyjrzeć się curry() i partial().
curry() kumuluje argumenty (jak w twoim przykładzie), ale z jedną różnicą: gdy tylko arion jest spełniony, wywołuje funkcję zwracającą wartość. Wdrożenie swój przykład:
df.curry(out)("hello")("world");
df.curry(out)("hello", "world");
Zauważ, że ostatni wiersz nie ma „()” na końcu — nazywa się automatycznie.
częściowy() pozwala zastąpić argumenty losowo:
df.partial(out, df.arg, "world")("hello");
Polecam funkcję 'curry' [Lodasha] (http://lodash.com/docs#curry). BTW Polecam całą bibliotekę, jest bardzo przydatna. –