29 lines
524 B
JavaScript
29 lines
524 B
JavaScript
/**
|
|
* The MIT License (MIT)
|
|
* Copyright (c) 2017-present Dmitry Soshnikov <[email protected]>
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* Performs a deep copy of an simple object.
|
|
* Only handles scalar values, arrays and objects.
|
|
*
|
|
* @param obj Object
|
|
*/
|
|
|
|
module.exports = function clone(obj) {
|
|
if (obj === null || typeof obj !== 'object') {
|
|
return obj;
|
|
}
|
|
var res = void 0;
|
|
if (Array.isArray(obj)) {
|
|
res = [];
|
|
} else {
|
|
res = {};
|
|
}
|
|
for (var i in obj) {
|
|
res[i] = clone(obj[i]);
|
|
}
|
|
return res;
|
|
}; |