Javascript function-pointer mit dem argument als parameter in einer Funktion
Nicht sicher, ob der Titel richtig formuliert, oder ob es einen besseren Weg, es zu sagen, aber ich denke, das ist okay.
Jedenfalls verstehe ich die folgende so weit:
a.b("a", "b", "c", foo);
Wo "foo" ist eine Funktion, die definiert an anderer Stelle, dass keine Argumente würde einfach das Ergebnis in die Funktion ein.b() ausgeführt, mit den oben genannten Parametern. Der parameter "foo" kann dann aufgerufen werden, innerhalb der Funktion ein.b() einfach als "foo()". In anderen Worten, ich verstehe den obigen Aufruf über einen Funktionszeiger als argument in die Funktion ein.b als parameter.
Okay, jetzt ist hier, was ich versuche zu tun...
Ich möchte in der Lage sein, etwas zu tun, ähnlich wie oben, außer dieser Zeit, die ich möchte, dass foo ein Parameter übergeben, das argument wie folgt:
a.b("a", "b", "c", foo("bar"));
Hier ist nun das problem. Diese wird wörtlich Ergebnis in den Parameter "a", "b", "c" und die Ergebnis von foo("bar") verwendet wird. Das will ich nicht. Ich möchte foo("bar") buchstäblich übergeben werden, so dass in der Funktion ein.b, die so Aussehen (wie den header):
a.b(first, second, third, fourth);
Konnten Referenz und rufen Sie den vierten parameter ein, wie:
fourth();
Selbst wenn die "vierte" hat ein argument. Ich kann nicht scheinen zu finden ein Weg, um dieses problem einen Rat?
Dank!
InformationsquelleAutor der Frage Jordan Johns | 2012-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung einer anonymen Funktion wickeln Sie Ihre
foo
nennen.Wenn Sie behalten müssen, die
this
Wert, der gegeben wäre, Sie können es aufrufen mit.call
. Sie können auch pass entlang einer gegebenen Argumente.Und natürlich die Funktion muss nicht unbedingt anonym sein. Sie können eine benannte Funktion genauso gut.
InformationsquelleAutor der Antwort I Hate Lazy
Es ist wirklich einfach zu bedienen, BINDEN Sie mit der Funktion
Also, wenn Sie rufen
foo()
innen Ihre Funktion es hat bereits die ersten gebundenen argument. Sie gelten als mehr argumenst, wie Sie möchten, mitbind
.Beachten Sie, dass
bind
immer anwenden-Argumente zu Funktion und legen Sie Sie zuerst. Wenn Sie sich bewerben möchten und verwenden Sie diese:Siehe Beispiel http://jsfiddle.net/zafod/YxBf9/2/
InformationsquelleAutor der Antwort Roman