65 lines
		
	
	
		
			826 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			826 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
/*
 | 
						|
	Deep-clone an object.
 | 
						|
*/
 | 
						|
function clone(obj)
 | 
						|
{
 | 
						|
	if (obj instanceof Object)
 | 
						|
	{
 | 
						|
		var clonedObj = (obj instanceof Array) ? [] : {};
 | 
						|
		
 | 
						|
		for (var i in obj)
 | 
						|
		{
 | 
						|
			if ( obj.hasOwnProperty(i) )
 | 
						|
			{
 | 
						|
				clonedObj[i] = clone( obj[i] );
 | 
						|
			}
 | 
						|
		}
 | 
						|
		
 | 
						|
		return clonedObj;
 | 
						|
	}
 | 
						|
	
 | 
						|
	return obj;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
	https://github.com/jonschlinkert/is-plain-object
 | 
						|
*/
 | 
						|
function isPlainObject(obj)
 | 
						|
{
 | 
						|
	return !!obj && typeof obj==="object" && obj.constructor===Object;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
	Shallow-merge two objects.
 | 
						|
*/
 | 
						|
function shallowMerge(target, source)
 | 
						|
{
 | 
						|
	if (target instanceof Object && source instanceof Object)
 | 
						|
	{
 | 
						|
		for (var i in source)
 | 
						|
		{
 | 
						|
			if ( source.hasOwnProperty(i) )
 | 
						|
			{
 | 
						|
				target[i] = source[i];
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	
 | 
						|
	return target;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
module.exports =
 | 
						|
{
 | 
						|
	clone: clone,
 | 
						|
	isPlainObject: isPlainObject,
 | 
						|
	shallowMerge: shallowMerge
 | 
						|
};
 |