code: function extend() {
      var destination = arguments[0] || {};
      if (arguments.length < 2) return destination;
  
      var sources = Array.prototype.slice.call(arguments, 1);
  
      sources.forEach(function(source) {
          _extend(destination, source);
      });
  
      return destination;
  }
docs: Recursively assigns own enumerable properties of source object(s) to the destination object for all destination properties that resolve to undefined.
  Once a property is set, additional values of the same property are ignored.
  
  @return {Object} the destination
  @function extend(destination, [sources...])