Gibt es eine Möglichkeit, dass ich eine Funktion als JSON-Zeichenfolge übergeben kann (Konvertierung mit JSON.Stringify), senden Sie es an eine andere Funktion, analysieren Sie die JSON und führen Sie dann die Funktion, die in der JSON war ? Ich benutze jQuery und Javascript.übergeben Sie Funktion in JSON und führen
Antwort
Hier ist ein Arbeits example
Grundsätzlich muss man mit dieser Art der Sache vorsichtig sein. Wenn Sie eine vorhandene JavaScript-Funktion verwenden, drehen Sie sie in eine Zeichenfolge und überprüfen Sie, ob es zu Problemen bei der Funktionserkennung kommt. Wenn Sie einfach eine Funktion Zeichenfolge vom Server zu nehmen und Sie wollen es ausführen, können Sie tun, was ich an diesem jsfiddle tat:
Javascript
var myFunc = "function test() {alert('test');}";
$(document).ready(function() {
var data = new Object();
data.func = myFunc;
var jsonVal = $.toJSON(data);
var newObj = $.evalJSON(jsonVal);
eval(newObj.func);
test();
});
Nein, das geht nicht. Funktionen können nicht serialisiert werden. Anstatt das Objekt in JSON zu konvertieren, könnten Sie es direkt an die andere Funktion übergeben, ohne JSON.stringify aufzurufen.
Ich habe das Gefühl, er hat einen Draht durchqueren somewhere ... – jcolebrand
JSON = JavaScript Object Notation - natürlich kann die Funktion serialisiert und hin- und hergereicht werden. Was ist ein Objekt? So ziemlich alles in JS, Funktionen enthalten. Ärgern Sie sich, wenn jemand "Nein" sagt, wenn "JA" die richtige Antwort ist. Besser zu sagen "nicht dass ich mir dessen bewusst bin". Bill –
Ich würde zehnmal denken, bevor ich sage, dass SMT in JavaScript nicht möglich ist :) Kaum kann sich sogar ein paar "NEIN" s in JS per se erinnern. "WIE" und "WARUM NICHT" sind die häufigsten Fragen. –
Ja, Sie können eine Funktion mit der Methode toString()
in eine Zeichenfolge konvertieren.
Here's an example zeigen eine Funktion Konvertierung in einen String zu einer Funktion und zurück:
var myfunc = function() {
alert('It works!');
}
var as_string = myfunc.toString();
as_string = as_string.replace('It works', 'It really works');
var as_func = eval('(' + as_string + ')');
as_func();
Dieser Programmieransatz öffnet wirklich Ihre Meinung. – zardilior
Ja, können Sie. Es gibt Unmengen von Möglichkeiten, dies zu tun.
Und es gibt keine Notwendigkeit, die „böse“ eval-Funktion zu verwenden (bitte yahoogle warum es vermieden werden soll), wie hier darauf hingewiesen: http://javascript.about.com/library/bleval.htm
var tmpFunc = new Function(codeToRun);
tmpFunc();
Ob es sollte JSON zu jedem Zeitpunkt irrelevant sein.
+1 für "yahoogle". Ist Bing nicht populärer als Yahoo in diesen Tagen? Wäre das "bingle"? Oder der längere Satz, den Scott Hanselman bei Präsentationen "Google it on Bing" verwendet hat? – GregL
Ich stimme @GregL zu, aber ich habe diesen Satz vor einiger Zeit geprägt und möchte ihn einfach nicht loslassen! Mit "Bingle", "Bingoogle" ... klingt einfach nicht richtig zu mir. Außerdem gibt es viele Wörter und Sprichwörter in der englischen Sprache, die sich auf veraltete Dinge beziehen ... – EasierSaidThanDone
YabingleYabingleGo – Automatico
werfen Sie einen Blick auf das JSONfn Plugin.
http://www.eslinstructor.net/jsonfn/
es tut genau das, was Sie fragen.
-Vadim
habe ich eine Gabel von JSONfn mit den Objekten und ihre Prototypen stringify und analysieren kann. In meinen grundlegenden Tests hat es gut funktioniert.
// In jquery Bibliothek
Klick mich
var jsonFun = {
fun1 : function(){
alert('Done');
}
}
$('button').click(function(){
jsonFun.fun1();
});
Dies ist ich die beste Art und Weise erraten Funktion in JSON passieren
- 1. übergeben Sie eine Funktion als Parameter und führen Sie es dann in einer jquery-Funktion
- 2. Führen Sie Python-Funktion von JavaScript-Funktion
- 3. Führen Sie eine Funktion in Timeout Looping
- 4. Übergeben Sie eine Eingabevariable und führen Sie sie in das Dokument ein. Bash script
- 5. NodeJS: JSON gelesen und Variablen führen speichern
- 6. Übergeben Sie JSON-Objekt vs JSON-Zeichenfolge in HTTP POST
- 7. Wie JSON-Array in Java-Skript-Funktion übergeben und json Array zufällig zugreifen
- 8. Führen Sie VBA-Funktion mit einer Schaltfläche
- 9. Führen Sie eine Funktion unendlich oft
- 10. Führen Sie Javascript-Funktion auf geladener Seite
- 11. Javascript - fangen Syntax und führen alternative Funktion
- 12. Führen Sie ssh aus und führen Sie den Befehl aus
- 13. Übergeben Sie Argumente in Anführungszeichen an Shellskript und führen Sie das Anführungszeichen
- 14. Führen Sie eine Funktion nach angular foreach
- 15. Übergeben Sie separaten Wert in Template-Funktion
- 16. Wie eine Reihe von Json-Daten in JavaScript-Funktion übergeben?
- 17. Programmatisch ausführen und Ergebnisse an Variable oder Funktion übergeben
- 18. Konvertieren Sie JSON in ein Objekt, und führen Sie dann verschiedene Aktionen basierend auf Objekttyp aus
- 19. Übergeben Variable in Funktion
- 20. Übergeben Sie eine JSON-Zeichenfolge als Befehlszeilenargument
- 21. Postgres: Führen Sie die Anweisung und Limit
- 22. So führen Sie eine Funktion auf jeder Seite in AngularJs
- 23. Führen Sie PHP-Funktion in einem anderen Teil des Codes
- 24. Führen Sie eine bestimmte Python-Funktion in C# mit IronPython
- 25. Führen Sie eine Funktion, nachdem alle Hintergrundprozess in schnellen
- 26. Erstellen und führen Sie mit Argumenten in Sublime Text 2
- 27. Übergeben Sie einen Parameter preparedForSegue von Funktion
- 28. So führen Sie eine Funktion aus, nachdem Sie einen Wert in einer anderen Funktion zurückgegeben haben
- 29. JSON obj aus der Parse-Funktion übergeben? | noob Javascript Frage
- 30. Übergeben Sie eine Funktion an einen #Selector
cool - danke für diese – amateur