Ich habe die folgende Situation in JavaScript:Wie kann ich eine anonyme Funktion (in String gespeichert) mit einem Argument in JavaScript aufrufen?
<a onclick="handleClick(this, {onSuccess : 'function() { alert(\'test\') }'});">Click</a>
Die handleClick
Funktion empfängt das zweite Argument als Objekt mit einer onSuccess
Eigenschaft, um die Funktionsdefinition enthält ...
Wie rufe ich die Funktion onSuccess
(die als String gespeichert ist) -und- otherObject
an diese Funktion übergeben? (jQuery Lösung auch gut ...)?
Das ist, was ich bisher ...
habe versucht, diesefunction handleClick(element, options, otherObject) {
options.onSuccess = 'function() {alert(\'test\')}';
options.onSuccess(otherObject); //DOES NOT WORK
eval(options.onSuccess)(otherObject); //DOES NOT WORK
}
bah ... und hier war ich gerade dabei, meine Ausführungen zum Umfang von eval zu schreiben. +1 für die Beantwortung der eigentlichen Frage. – Jimmy
Ja, ich habe das getan, aber das bedeutet, dass ich den json_encode in PHP nicht mehr benutzen kann ... das kapselt alles in Strings ein. – Ropstah
@roppah: nicht sicher, warum du Funktionsdefinitionen über JSON übergeben willst. .. Wenn Sie diese Funktionen nicht direkt serverseitig erzeugen, sollten Sie in Erwägung ziehen, eine Bibliothek von Funktionen zusammenzustellen und sie dann im JSON * zu benennen. Sie können dann die gewünschte Funktion nachschlagen, ohne sich um eval() zu kümmern. – Shog9