code: function extend(destination, source, recursive) {
      destination = destination || {};
      source = source || {};
      recursive = recursive || false;
  
      for (var attrName in source) {
          if (source.hasOwnProperty(attrName)) {
              var destVal = destination[attrName];
              var sourceVal = source[attrName];
              if (recursive && isObject(destVal) && isObject(sourceVal)) {
                  destination[attrName] = extend(destVal, sourceVal, recursive);
              } else {
                  destination[attrName] = sourceVal;
              }
          }
      }
  
      return destination;
  }
docs: Copy all attributes from source object to destination object. destination object is mutated.