dist/hello.all.js
function(r /*, a[, b[, ...]] */) {

		// Get the arguments as an array but ommit the initial item
		Array.prototype.slice.call(arguments, 1).forEach(function(a) {
			if (Array.isArray(r) && Array.isArray(a)) {
				Array.prototype.push.apply(r, a);
			}
			else if (r && (r instanceof Object || typeof r === 'object') && a && (a instanceof Object || typeof a === 'object') && r !== a) {
				for (var x in a) {
					r[x] = hello.utils.extend(r[x], a[x]);
				}
			}
			else {

				if (Array.isArray(a)) {
					// Clone it
					a = a.slice(0);
				}

				r = a;
			}
		});

		return r;
	}
function(r /*, a[, b[, ...]] */) {

		// Get the arguments as an array but ommit the initial item
		Array.prototype.slice.call(arguments, 1).forEach(function(a) {
			if (Array.isArray(r) && Array.isArray(a)) {
				Array.prototype.push.apply(r, a);
			}
			else if (r && (r instanceof Object || typeof r === 'object') && a && (a instanceof Object || typeof a === 'object') && r !== a) {
				for (var x in a) {
					r[x] = hello.utils.extend(r[x], a[x]);
				}
			}
			else {

				if (Array.isArray(a)) {
					// Clone it
					a = a.slice(0);
				}

				r = a;
			}
		});

		return r;
	}
function ( r /*, a[, b[, ...]] */ ) { // Get the arguments as an array but ommit the initial item Array . prototype . slice . call ( arguments , 1 ) . forEach ( function ( a ) { if ( Array . isArray ( r ) && Array . isArray ( a ) ) { Array . prototype . push . apply ( r , a ) ; } else if ( r && ( r instanceof Object || typeof r === 'object' ) && a && ( a instanceof Object || typeof a === 'object' ) && r !== a ) { for ( var x in a ) { r [ x ] = hello . utils . extend ( r [ x ] , a [ x ] ) ; } } else { if ( Array . isArray ( a ) ) { // Clone it a = a . slice ( 0 ) ; } r = a ; } } ) ; return r ; }
Extend the first object with the properties and methods of the second
Extend the first object with the properties and methods of the second