2009-07-06 4 views
4

Ich habe den Javascript-Debugger (Strg + Umschalt + L) in Chrome geöffnet und damit begonnen, Breakpoints in meinem Code zu setzen.In Chrome JS Debugger, wie drucke ich alle Eigenschaften eines Objekts?

Dies ist eine viel andere Schnittstelle im Vergleich zu Firebug, (es ist alles Kommandozeile), also frage ich mich, wie man eine einfache Sache wie Drucken aller Eigenschaften eines Objekts tut.

Wenn ich ein Objekt wie folgt aus:

var opts = { 
    prop1: "<some><string/></some>", 
    prop2: 2, 
    prop3: [1,2,3] 
} 

ich einen Haltepunkt setzen und das Objekt inspizieren, aber ich scheine nur wieder eine einzige Eigenschaft zu bekommen, und ich bin nicht sicher, welche Eigenschaft angezeigt :

$ print opts 
#<an Object> 

der Versuch, alle Eigenschaften zu erhalten:

$ print for(var p in opts) p; 
prop1 

Irgendwelche Ideen? Es hat offensichtlich mehr als nur einen ...

Antwort

0

verwenden können, also habe ich versucht, das "dir" Befehl, und es gibt mir etwas zumindest:

$dir opts 
3 properties 
prop1: string (#11#) 
prop2: string (#12#) 
prop3: string (#13#) 

Das funktioniert auch (etwas besser, weil es mir einige Werte gibt), schneidet aber das Ende der Zeichenkette ab, wenn es zu lang ist:

0

Versuchen Sie es mit der Befehlszeile in der JavaScript-Konsole am unteren Rand des Inspektors (Ctrl+Shift+J). Es hat ein viel mehr Firebug-ähnliches Gefühl.

+0

Wie kann ich einen Haltepunkt setzen Sie den Inspektor? Mein Problem ist, dass ich die Ausführung unterbrechen und den Wert des Objekts überprüfen möchte. –

6

Chrome hat ECMA-Stil nativen JSON, so dass Sie

JSON.stringify (opts); 
{"prop1":"<some><string/></some>","prop2":2,"prop3":[1,2,3]} 
+0

Das ist gut zu wissen, aber es scheint, dass es im Debugger nicht funktioniert. (ReferenceError: JSON ist nicht definiert) –

0

Sie können den Objektnamen einfach in die Befehlszeile des Chrome-Debuggers eingeben und eine Liste mit Blättern erhalten. In meinem Fall wollte ich alle Eigenschaften und Methoden, die ich in ein externes Dokument einfügen konnte. Dieser arbeitete für mich:

for (a in opts) console.log(typeof (opts[a]) + ' :: ' + a); 

kehrt:

string :: id 
string :: name 
number :: selectMode 
string :: url 
boolean :: multi 
object :: selectedRows 
object :: selectedValues 
function :: Load 
function :: _LoadInternal 
function :: _CreatePostElements 
...etc...