blob: ca18f470f852e07697f25039d6153c28b4fd02c2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
class ObjectClone {
/**
*
* @param {Object} object
* @return {Object}
*/
clone(object) {
if(typeof object !== 'object') return object;
let clone = new object.constructor();
for(let key in object) {
if(!object.hasOwnProperty(key)) continue;
let element = object[key];
if(Array.isArray(element)) {
clone[key] = element.slice(0);
} else if(element instanceof Date) {
clone[key] = new Date(element.getTime());
} else if(element === null) {
clone[key] = null;
} else if(typeof element === 'object') {
clone[key] = this.clone(element);
} else {
clone[key] = element;
}
}
return clone;
}
}
export default new ObjectClone();
|