实现深拷贝的三种方式

74 阅读1分钟

使用原生JS实现深拷贝

    `function getType(data){
       return Object.prototype.toString.call(data).slice(8,-1);
    }//1.声明一个函数,返回数据的类型

    
    function deepCopy(data){//把数组和对象拿出来赋空
        if(getType(data) == "Array"){
            var res = [];
        }else if(getType(data) == "Object"){
            var res = {};
        }else{
            return data;//没有数组或对象就结束递归
        }//2.声明一个函数,实现深拷贝
        
        
        for(var key in data){
           res[key] = deepCopy(data[key]); //递归
        }//循环将内容添加到空区间中

        return res;
    }`

JSON方法实现深拷贝

`var obj1 = JSON.stringify(obj);

var obj2 = JSON.parse(obj1) `

jQuery方法实现深拷贝

`//参数:$.extend(deep,targetObj,refobj)

deep:是否深拷贝 默认是false:浅拷贝, true:深拷贝 targetObj:目标对象 refobj:被拷贝的对象

var obj2 = $.extend(true,{},obj1);`