@ssports_fe/ssutils
Version:
40 lines (33 loc) • 909 B
JavaScript
/**
* @desc 深拷贝,支持常见类型
* @param {Any} values
*/
const deepClone = (values) => {
let copy;
// Handle the 3 simple types, and null or undefined
if (values == null || typeof values !== 'object') return values;
// Handle Date
if (values instanceof Date) {
copy = new Date();
copy.setTime(values.getTime());
return copy;
}
// Handle Array
if (values instanceof Array) {
copy = [];
for (let i of values) {
copy[i] = deepClone(i);
}
return copy;
}
// Handle Object
if (values instanceof Object) {
copy = {};
for (let attr in values) {
if (values.hasOwnProperty(attr)) copy[attr] = deepClone(values[attr]);
}
return copy;
}
throw new Error("Unable to copy values! Its type isn't supported.");
};
module.exports = deepClone;