深度拷贝

2018-11-27  本文已影响42人  天字一等

hasOwnProperty ()方法可以用来对象是否有特定的属性,而且该方法会忽略掉那些从原型链上继承到的属性
https://www.cnblogs.com/echolun/p/7889848.html
深度拷贝方法三种:
方法一:
深度拷贝函数:


function deepClone(obj){
    var objClone = Array.isArray(obj) ? [] : {};
    for(key in obj){
        if(obj.hasOwnProperty(key)){
            if(obj[key] && typeof obj[key] == "object"){
                objClone[key] = deepClone(obj[key]);
            }else{
                objClone[key] = obj[key];
            }
        }
    }
    return objClone;
}
var data = [
    {
        name:"xiao"
    },
    {
        age:"22"
    }
];
var newData = deepClone(data);
data[0] = "第三个";
console.log(data,newData);

方法二
JSON.stringfy()、JSON.parse()组合

function deep(){
    let _obj = JSON.stringify(obj);
    let newobj = JSON.parse(_obj);
    return newobj;
}
let obj = [1,2,[3,4],5];
let b = deep(obj);
obj[0] = 0;
console.log(obj,b)

方法三:jquery中的extends方法

let a=[0,1,[2,3],4],
    b=$.extend(true,[],a);
a[0]=1;
a[2][0]=1;
console.log(a,b);
上一篇 下一篇

猜你喜欢

热点阅读