code: function extend() {
      var target = arguments[0] || {};
      var i = 1;
      var length = arguments.length;
      var deep = false;
      var options, name, src, copy, copy_is_array, clone;
  
      // Handle a deep copy situation
      if (typeof target === 'boolean') {
        deep = target;
        target = arguments[1] || {};
        // skip the boolean and the target
        i = 2;
      }
  
      // Handle case when target is a string or something (possible in deep copy)
      if (typeof target !== 'object' && !isFn(target)) {
        target = {};
      }
  
      for (; i < length; i++) {
        // Only deal with non-null/undefined values
        options = arguments[i];
        if (options !== null) {
          if (typeof options === 'string') {
            options = options.split('');
          }
          // Extend the base object
          for (name in options) {
            src = target[name];
            copy = options[name];
  
            // Prevent never-ending loop
            if (target === copy) {
              continue;
            }
  
            // Recurse if we're merging plain objects or arrays
            if (deep && copy && (isHash(copy) || (copy_is_array = isArray(copy)))) {
              if (copy_is_array) {
                copy_is_array = false;
                clone = src && isArray(src) ? src : [];
              } else {
                clone = src && isHash(src) ? src : {};
              }
  
              // Never move original objects, clone them
              target[name] = extend(deep, clone, copy);
  
              // Don't bring in undefined values
            } else if (typeof copy !== 'undefined') {
              target[name] = copy;
            }
          }
        }
      }
  
      // Return the modified object
      return target;
    }
docs: source: https://github.com/dreamerslab/node.extend/blob/master/lib/extend.js