天天看点

JavaScript中的深拷贝和浅拷贝

1、浅层拷贝

在拷贝时,对于属性值为引用类型的属性也只会拷贝其地址,而不是具体的值,这会导致我们修改了拷贝后的引用类型数据时会影响到原对象中的引用类型属性。

a、通过for in遍历实现

JavaScript中的深拷贝和浅拷贝

b、通过Object.assign方法实现 

JavaScript中的深拷贝和浅拷贝

 2、深层拷贝

var obj = {
        name: "zs",
        teg: ["数据结构", "算法", "设计模式"],
        children: {
            name: "zs_1",
            sex: "女",
            age: 3
        }
    }
 
    function fn(obj) {
        var newObj = obj instanceof Array ? [] : {}
        for (let k in obj) {
            newObj[k] = typeof obj[k] === 'object' ? fn(obj[k]) : obj[k];
        }
        return newObj;
    }
           
JavaScript中的深拷贝和浅拷贝

2、通过JSON方法转换实现

先用JSON.stringify方法把对象转换为字符串

在用JSON.parse()方法把字符串转为对象

JSON方法如果对象里面出现方法会显示不出来

继续阅读