var traverse = function(o, fn) { for (var i in o) { fn.apply(this,[i,o[i]]); if (o[i] !== null && typeof(o[i])=="object") { traverse(o[i], fn); } } } // usage var obj = {'your':'object'}; traverse(obj, function(k,v){ console.log(k + " : " + v); });