深拷贝浅拷贝

问题:数据发生改变了 但是页面没有重新渲染 (使用json对象的parse和stringify解决的)
第一个方法:递归
function deepClone(obj){ let objClone = Array.isArray(obj)?[]:{}; if(obj && typeof obj==="object"){ for(key in obj){ if(obj.hasOwnProperty(key)){ //判断ojb子元素是否为对象,如果是,递归复制 if(obj[key]&&typeof obj[key] ==="object"){ objClone[key] = deepClone(obj[key]); }else{ //如果不是,简单复制 objClone[key] = obj[key]; } } } } return objClone; }
let a=[1,2,3,4],
    b=deepClone(a);
a[0]=2;
console.log(a,b);

第二个方法:json对象的parse和stringify

function deepClone(obj){
    let _obj = JSON.stringify(obj),
        objClone = JSON.parse(_obj);
    return objClone
}    
let a=[0,1,[2,3],4],
    b=deepClone(a);
a[0]=1;
a[2][0]=1;
console.log(a,b);
第三个方法:jquery的extend方法(需要依赖jquery的库)



posted @ 2019-05-08 13:53  啾啾啾啾一口  阅读(216)  评论(0编辑  收藏  举报