如何实现浅拷贝

50 阅读1分钟

浅拷贝只复制一层对象的属性,二深拷贝则复制了所有的层级。

对于简单类型来说浅拷贝,拷贝的是值,对于引用类型来说浅拷贝拷贝的是地址,修改其中一个对象的属性,则另一个对象的属性也会改变.

而深拷贝则是开辟新的栈,两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。

如何实现浅拷贝,展开运算符方法

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        const obj1 = {
            uname: '张三',
            age: 18,
            gender: '男',
            gfs: ['凤姐', '芙蓉姐姐', '黄蓉'],
            wife: {
                w1: '蔡徐坤',
                w2: 'iun'
            }
        }
        const obj2 = {...obj1}
        obj2.uname = '王五'
    </script>
</body>

</html>

如何实现浅拷贝,Object.assign()方法

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        const obj1 = {
            uname: '张三',
            age: 18,
            gender: '男',
            gfs: ['凤姐', '芙蓉姐姐', '黄蓉'],
            wife: {
                w1: '蔡徐坤',
                w2: 'ikun'
            }
        }
        const obj2  = {}
        Object.assign(obj2,obj1)
        console.log(obj2);
    </script>
</body>
</html>