code: function extend( target, src ) {
  		var name, copy, copyIsArray, clone,
  			options = src,
  			i = 1,
  			deep = true;
  		// Handle a deep copy situation
  		if( typeof target === 'boolean' ) {
  			deep = target;
  			// 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' && typeof target !== 'function' ){
  			target = {};
  		}
  		// Only deal with non-null/undefined values
  		if (! options) return target;
  
  			// 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
  			copyIsArray = Array.isArray(copy);
  			if( deep && (typeof copy === 'object' || copyIsArray)) {
  				if( copyIsArray ) {
  					clone = src && Array.isArray(src) ? src : [];
  				} else clone = src && typeof src === 'object' ? src : {};
  				// Never move original objects, clone them
  				target[name] = extend(clone, copy);
  				// Don't bring in undefined values
  			} else if( typeof copy !== 'undefined' ) target[name] = copy;
  		}
  
  		return target;
  	}
docs: /* $.extend functionality