49 lines
841 B
JavaScript
49 lines
841 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,
|
|
};
|