Object.filter = function( obj, predicate) {
var result = {}, key;
for (key in obj) {
if (obj.hasOwnProperty(key) && !predicate(obj[key]){ //really confused about the !predicate(obj[key]) part
result[key] = obj[key];
}
}
return result;
};