**three handy functions for raking objects:**

obVals : an array of the object's values (variants)

obKeys : an array of the object's keys (strings)

obMap : an array of the object's keys and values: [key,value] (arrays)

Code:

function obVals(ob) {var r = [];var i = 0;for (var z in ob) {if (ob && ob.hasOwnProperty && ob.hasOwnProperty(z)) {r[i++] = ob[z];}}return r;}
function obKeys(ob) {var r = [];var i = 0;for (var z in ob) {if (ob.hasOwnProperty(z)) {r[i++] = z;}}return r;}
function obMap(ob) {var r = [];var i = 0;for (var z in ob) {if (ob.hasOwnProperty(z)) {r[i++] = [z, ob[z]];}}return r;}
//same code expanded
function obVals(ob) {
var r = [];
var i = 0;
for (var z in ob) {
if (ob && ob.hasOwnProperty && ob.hasOwnProperty(z)) {
r[i++] = ob[z];
}
}
return r;
}
function obKeys(ob) {
var r = [];
var i = 0;
for (var z in ob) {
if (ob.hasOwnProperty(z)) {
r[i++] = z;
}
}
return r;
}
function obMap(ob) {
var r = [];
var i = 0;
for (var z in ob) {
if (ob.hasOwnProperty(z)) {
r[i++] = [z, ob[z]];
}
}
return r;
}
//examples
var ob = ({ a:1,b:2,c:3 });
alert(obKeys(ob))// = a,b,c
alert(obVals(ob))// = 1,2,3
alert(obMap(ob).join("|"))// = a,1|b,2|c,3