JavaScript深拷贝

      /** 深拷贝,防止在获取全局变量时,改变全局变量的值
      * This is just a simple version of deep copy
      * Has a lot of edge cases bug
      * If you want to use a perfect deep copy, use lodash's _.cloneDeep
      */
    function deepClone(source) {
        if (!source && typeof source !== 'object') {
            throw new Error('数据类型错误')
        }
        const targetObj = source.constructor === Array ? [] : {}
        Object.keys(source).forEach((keys) => {
            if (source[keys] && typeof source[keys] === 'object') {
                targetObj[keys] = deepClone(source[keys])
            } else {
                targetObj[keys] = source[keys]
            }
        })
        return targetObj
    }
posted @ 2021-10-21 14:42  初出茅庐小菜鸡  阅读(39)  评论(0编辑  收藏  举报