2009-04-14 11 views
80

Gibt es ein Add-On/eine Anwendung von Drittanbietern oder eine Möglichkeit, Objektmap-Dumping im Skript-Debugger für ein JavaScript-Objekt durchzuführen?Object Dump JavaScript

Hier ist die Situation ... Ich habe eine Methode zweimal aufgerufen, und während jeder Zeit ist etwas anders. Ich bin mir nicht sicher, was anders ist, aber etwas ist. Also, wenn ich alle Eigenschaften von Fenster (oder zumindest window.document) in einen Texteditor ablegen könnte, könnte ich den Zustand zwischen den beiden Aufrufen mit einem einfachen Dateivergleich vergleichen. Gedanken?

+0

Mögliches Duplikat von [Wie kann ich ein JavaScript-Objekt anzeigen?] (Https://stackoverflow.com/questions/957537/how-can-i-display-a-javascript-object) –

Antwort

62

Firebug + console.log(myObjectInstance)

+4

... und dann schauen in die * Firebug Konsole * und nicht die Standard * Javascript Konsole *. :-) – towi

+2

Was ist, wenn Ihr Fehler nur in einem anderen Browser vorhanden ist? –

+0

@SteveRobbins, ein Browser, der keine Konsole hat, in der Sie Werte von Ihrem Javascript ausgeben könnten, ist heutzutage unwahrscheinlich. Beziehen Sie sich auf einen bestimmten Browser? –

41
function mydump(arr,level) { 
    var dumped_text = ""; 
    if(!level) level = 0; 

    var level_padding = ""; 
    for(var j=0;j<level+1;j++) level_padding += " "; 

    if(typeof(arr) == 'object') { 
     for(var item in arr) { 
      var value = arr[item]; 

      if(typeof(value) == 'object') { 
       dumped_text += level_padding + "'" + item + "' ...\n"; 
       dumped_text += mydump(value,level+1); 
      } else { 
       dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n"; 
      } 
     } 
    } else { 
     dumped_text = "===>"+arr+"<===("+typeof(arr)+")"; 
    } 
    return dumped_text; 
} 
+4

Aktualisieren Sie Ihren Code mit der Änderung des Funktionsnamens, wie in Rekursion Aufruf, es heißt "Dump" beim Definieren der Zeit seine "mydump" – Vikas

+7

Kopieren und Einfügen von: http: //binnyva.blogspot. com/2005/10/dump-function-javascript-equivalent-of.html – utopianheaven

+1

das tötet Chrome und Firefox mit "zu viel Rekursion", wenn verwendet, um ein jquery Objekt zu untersuchen – slashdottir

11

Für Chrome/Chromium

console.log(myObj) 

oder es ist gleichwertig

console.debug(myObj) 
110
console.log("my object: %o", myObj) 

Andernfalls werden Sie mit einem String Repre Ende Senden manchmal angezeigt:

[object Object] 

oder einige solcher.

+2

Das war genau das, was ich brauchte, danke. –

+0

Hinweis: Funktioniert nicht in der PHPStorm Debug-Konsole. –

+4

Funktioniert auch nicht unter node.js – Cheruvim

18

Verwenden Sie einfach:

console.dir(object); 

Sie eine schöne klickbare Objektdarstellung erhalten. Arbeiten in Chrome und Firefox

+1

Chrome und Firefox geben [object Object] – slashdottir

+0

Sie können es in der Konsole (Hit F12) mit 'console.dir ({bar:" foo "}) testen;' Überschreibt Ihr Objekt die toString-Methode? –

+0

scheint zumindest in der Konsole zu funktionieren. wahrscheinlich userr von mir. danke – slashdottir

35

Wenn Sie auf Chrome, Firefox oder Internet Explorer 10 + sind, warum nicht die Konsole erweitern und

(function() { 
    console.dump = function(object) { 
     if (window.JSON && window.JSON.stringify) 
      console.log(JSON.stringify(object)); 
     else 
      console.log(object); 
    }; 
})(); 

für eine kurze, Cross-Browser-Lösung verwenden.

+0

Ich mag dieses. Speziell für Browser, die kein Objektdumping unterstützen. – Aley

+0

Und vielleicht ersetzen Sie das "else console.log (Objekt);" mit einem Aufruf einer benutzerdefinierten Traversalfunktion wie in http://stackoverflow.com/a/3011557/2236012 oben? ...;) –

+0

@ C.B. "Zu viel Rekursion" und ein eingefrorener Browser ist das, was mir das in Firefox und Chrome bringt. – slashdottir

0

Mit console.log(object) werfen Sie Ihr Objekt auf die Javascript-Konsole, aber das ist nicht immer was Sie wollen. Wenn Sie JSON.stringify(object) verwenden, werden die meisten Daten, die in einer Variablen gespeichert werden sollen, zurückgegeben, z. B. um sie an eine TextArea-Eingabe zu senden und den Inhalt zurück an den Server zu senden.