title: Using underscore.js to copy backbone.js Model  attributes - algorithm
body: <p>I want to copy all attributes from backbone.js Model object to another if they are not undefined. It's a little like a child overriding the attributes of a parent. There will be some attributes of the child object which should be excluded from the entire process. This is what I have so far:</p>
  
  <pre><code>function inherit(parent, child) {
      var childAttributes = Object.keys(child.attributes);
  
      // Don't involve these attributes in any way, they're special.
      attributes = _.without(attributes, ['specialCase1', 'specialCase2', 'specialCase3']);
  
      // This array will store undefined child attributes
      var undefChildAttributes = new Array();
  
     for (i in attributes) {
            var attr = attributes[i];           // Get attribute name
            var value = child.get(attr);        // ... and value
            var type = RealTypeOf(value);       // ... and type
  
            if (type == 'undefined') {
                   undefChildAttributes.push(attr);
            }       
     }
  
     // Update the child attributes array to not include undefined any attributes
     attributes = _.without(attributes, undefChildAttributes);
  
     // Copy any attributes from child to parent
  
     // ------------------ PROBLEM AREA ------------------
     for (var m=0; m&lt;attributes.length; m++) {
            var attr = attributes[m];                // Attribute to copy
  
            // I want to use _.extends in some way here, maybe like:
            _.extends(parent, child[attr]);
     }
  }
  </code></pre>
  
  <p>I'm stuck at the point of how to copy the attribute into the parent. The only way I have atm is a hack:</p>
  
  <pre><code>if (type == 'string') {
      eval('var o = {' + attr + ':"' + child.get(attr) + '"};');
   } else {
      eval('var o = {' + attr + ':' + child.get(attr) + '};');
  }
  
  parent.set(o);
  </code></pre>