I’ve found myself writing this bit of code a few times now, so thought I’d dump it here for future copy-and-paste.
function writeObj(obj, message) {
if (!message) { message = obj; }
var details = "*****************" + "\n" + message + "\n";
var fieldContents;
for (var field in obj) {
fieldContents = obj[field];
if (typeof(fieldContents) == "function") {
fieldContents = "(function)";
}
details += " " + field + ": " + fieldContents + "\n";
}
console.log(details);
}
This just dumps all the object’s fields into the debugging console provided by the Firebug extension for Firefox (the console.log(...) call). If you don’t have Firebug, you can easily create a custom console object to provide an alternative log method. For example, put this snippet at the top of the script to use window.alert(...) when console is undefined:
if (!console) {
var console = {log: function(details) { window.alert(details); }}
}
There are probably better ways of doing this, but I find this handy so I can quickly mash writeObj(myObject) into the console and get a list of all the object’s fields. For more fun with simple JavaScript reflection have a look at my earlier post on the subject.