Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ObjectClone.js « Utility « src - git.mdns.eu/nextcloud/passwords-client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
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();