title: Iterate over object attributes and modify them
body: <p>Underscore.js provides <code>_.each</code> and <code>_.map</code> on collections, which is nice, but I need to iterate over all attributes of my object. I need to modify the values and preserve the keys. E.g. I've got something like: <code>{a:1, b:2, c:3}</code> and I need to perform an operation that changes the value but keeps the keys. Let's say, I'll calculate squares, I should get <code>{a:1, b:4, c:9}</code>. The question is: <strong>how to do that using underscore</strong> (not interested in vanilla javascript)? I'd love a method like:</p>
  
  <pre><code>var a = {a:1, b:2, c:3}
  _.magic(a, function(item){ return item*item; });
  </code></pre>
  
  <p>Additionally, it would be great if this was possible to chain it, since I'm doing a map, dump result to perform each and then use a map again (because I need to).</p>