needy.js
function setProperties(target/*, source, ...*/)
	{
		var i = 1,
			max = arguments.length,
			source, prop;

		for (; i < max; ++i)
		{
			source = arguments[i];
			if (!(source instanceof Object))
				continue;

			for (prop in source)
			{
				if (source[prop] == null)
					continue;

				target[prop] = source[prop];
			}
		}

		return target;
	}
function setProperties(target/*, source, ...*/)
	{
		var i = 1,
			max = arguments.length,
			source, prop;

		for (; i < max; ++i)
		{
			source = arguments[i];
			if (!(source instanceof Object))
				continue;

			for (prop in source)
			{
				if (source[prop] == null)
					continue;

				target[prop] = source[prop];
			}
		}

		return target;
	}
function setProperties ( target /*, source, ...*/ ) { var i = 1 , max = arguments . length , source , prop ; for ( ; i < max ; ++ i ) { source = arguments [ i ] ; if ( ! ( source instanceof Object ) ) continue ; for ( prop in source ) { if ( source [ prop ] == null ) continue ; target [ prop ] = source [ prop ] ; } } return target ; }
Copy non-null properties from all sources, to the target
Copy non - null properties from all sources to the target