console.melden Sie unvereinbar mit JSON.stringify

Habe ich Grund zu glauben console.log und JSON.stringify können inkonsistente sichten auf das gleiche Objekt, auch wenn es erstellt wurde, auf einfache Weise (siehe Anhang).

Situation

In Google Chrome developer tools und Firebug, ich hatte ein Objekt obj die console.log ausgedruckt { players: {0: ...}, ...}, während JSON.stringify berichtet { players: {}, ...}. obj.players war {} unter beiden Funktionen, so scheint es, dass console.log ist der Schuldige. Könnte es sein, asynchrone/nicht-deterministisch in irgendeiner Weise?

Zusätzliche Hinweise

Ich fürchte, ich werde nicht in der Lage sein zu viel mehr Kontext, da der code ist langwierig und für einen client, aber ich kann versuchen, ob es etwas gibt, das helfen könnte, den Grund dieser. Für den moment, bin ich gezwungen, zu bleiben Weg von console.log für die Inspektion.

Könnte es nützlich sein, zu wissen, dass das Objekt gebildet wird, nur aus einem Objekt-literal durch festlegen der Eigenschaften von hand, z.B. obj.players = {}; obj.players[0] = ....

Code

Ein Beispiel, was ich meine beobachtet werden können http://jsfiddle.net/9dcJP/.

  • Warum nicht einfach console.log(JSON.stringify(obj)); ?
  • Ohne den code, den Sie kopieren könnte das JSON-Objekt und die beiden Anrufe zu einer jsfiddle zu zeigen, dass es reproduziert in dem einfachsten Fall.
  • Sorry, console.log(JSON.stringify(obj)) war, was ich meinte mit JSON.stringify.
  • JSON.stringify sollte der Bericht mit den Tasten, die von Anführungszeichen eingeschlossen, und die obj.players.0 einen syntax-Fehler. Haben Sie vielleicht einen bestimmten testcase zur Verfügung?
  • Hoppla, bedeutete obj.players[0]. Ich habe eine test-Fall auf jsfiddle jetzt.
  • möglich, Duplikat der Warum javascript-Objekt, zeigen Sie unterschiedliche Werte in der Konsole in Chrome, Firefox, Safari?
  • Ja, danke.
  • console.log hat einige asynch Probleme in Chrome, wenn Sie übergeben Sie ein Objekt und ändern Sie dann das Objekt sofort. Sie können es umgehen, reduzieren, was Sie an console.log einen string an, da Zeichenfolgen unveränderlich sind, wird nichts geändert, bevor es ausgegeben.

InformationsquelleAutor Peteris | 2012-01-04
Schreibe einen Kommentar