2012-09-29 4 views

Antwort

21

JSON nicht funktioniert überhaupt stringify können, behandelt er sie wie undefined oder null Werte. Sie können den genauen Algorithmus unter EcmaScript 5.1 §15.12.3 überprüfen, siehe auch die description at MDN.

aber Sie können natürlich Funktion Ausdruck stringify von ihnen in einen String Casting

console.log("" + function(){console.log('foobar');}) 
+0

Hi Bergi, ich habe meine Casted-Funktion an meinen Web-Arbeiter weitergegeben, aber wie kann ich wieder zu js zurückkehren? JSON.parse? –

+0

@TedFitzpatrick 'eval'. Natürlich funktioniert es nur für Funktionen ohne freie Variablen. – Bergi

+0

Danke Bergi. Ich übergebe einen Konstruktorfunktionsausdruck, der selbst interne Funktionsanweisungen hat. Wenn ich eval() bekomme ich "unerwartete Token (". Ich habe versucht, die umliegenden "function() {}" -Block entfernen, aber immer noch den Fehler ... kann ausgewertet Strings Funktionen enthalten? –

4

JSON versuchen hat keine Möglichkeit, eine Funktion darzustellen. Es ist ein Datenformat, das auf Einfachheit und sprachübergreifende Kompatibilität ausgelegt ist (und eine Funktion ist das letzte, das sprachübergreifend kompatibel ist).

Aus der Dokumentation für JSON.stringify:

Wenn nicht definiert, eine Funktion oder ein XML-Wert wird während der Konvertierung angetroffen wird entweder weggelassen oder zensierte auf null (wenn es (wenn es in einem Objekt gefunden wird) ist in einem Array gefunden).

Verwandte Themen