js深浅拷贝

浅拷贝:

1、对象:Object.assign()、{...obj1}

2、数组:Array.prototype.slice(arr1)

深拷贝:

1、简单封装函数

function deepClone(obj){
            if(obj === null) return null;
            if(typeof obj !== 'object') return obj;
            if(obj instanceof Date) return new Date(obj);
            if(obj instanceof RegExp) return new RegExp(obj);
            let copy = new obj.constructor();
            Object.keys(obj).forEach(key=>{
                copy[key] = deepClone(obj[key])
            })
            return copy
        }

 2、JSON.parse(JSON.Stringify(obj))存在诸多问题,如果属性值是Date、RegExp等复杂数据类型,则会出问题

posted @ 2020-07-10 15:06  朝思暮想的虫  阅读(141)  评论(0编辑  收藏  举报