Watch out for
for (var prop in obj) {}
It may iterate over attributes defined in the objects prototype. The right way to iterate over an object is for(var prop in obj) {
if(obj.hasOwnProperty(prop))
doSomethingWith(obj[prop]);
}
(see http://stackoverflow.com/a/588276)