ES6—32:浅拷贝和深拷贝

简介: ES6—32:浅拷贝和深拷贝
  1. 浅拷贝只是拷贝一层,更深层次对象级别的只是拷贝引用。
  2. 深拷贝拷贝多层,每一级别的数据都会拷贝。

浅拷贝

image.png

浅拷贝在拷贝对象的时候,只会拷贝引用。

ES6提供的浅拷贝方法

image.png

深拷贝(原生JS)

<script>
        var obj = {
            id: 1,
            name: 'andy',
            age: {
                pink: 666
            }
        };
        var o = {};
        function deepCopy(newObj,oldObj) {
            for(var k in oldObj) {
                // 首先获取每一个键对应的值,然后判断这个值是否为数组、对象
                var temp = oldObj[k];
                if(temp instanceof Array) {
                    newObj[k] = [];
                    deepCopy(newObj[k],temp);
                } else if(temp instanceof Object) {
                    newObj[k] = {};
                    deepCopy(newObj[k],temp);
                } else {
                    newObj[k] = temp;
                }
            }
        }
        deepCopy(o,obj);
        // console.log(o);
        o.age.pink = 777;
        console.log(obj);
        console.log(o);
    </script>


image.png

相关文章
|
存储 Cloud Native Linux
C++ 深拷贝浅拷贝
C++ 深拷贝浅拷贝
|
1月前
|
存储 前端开发 JavaScript
浅拷贝和深拷贝的区别?
本文首发于微信公众号“前端徐徐”,介绍了JavaScript中浅拷贝和深拷贝的概念及其实现方法。文章首先解释了数据类型的基础,包括原始值和对象的区别,然后详细介绍了浅拷贝和深拷贝的定义、底层逻辑以及常见的实现方式,如 `Object.assign`、扩展运算符、`JSON.stringify` 和手动实现等。最后,通过对比浅拷贝和深拷贝的区别,帮助读者更好地理解和应用这两种拷贝方式。
43 0
浅拷贝和深拷贝的区别?
|
5月前
|
安全 Java
深拷贝和浅拷贝的区别
深拷贝和浅拷贝的区别
|
6月前
|
Java
对引用拷贝,浅拷贝,深拷贝的理解
对引用拷贝,浅拷贝,深拷贝的理解
34 0
|
6月前
|
JavaScript 前端开发
浅拷贝和深拷贝
浅拷贝和深拷贝
45 2
|
算法 前端开发
算法练习--深拷贝与浅拷贝
深拷贝与浅拷贝
73 0
|
编译器 C++
C++中的深拷贝和浅拷贝介绍
对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如: class Base{ public: Base(): m_a(0), m_b(0){ } Base(int a, int b): m_a(a), m_b(b){ } private: int m_a; int m_b; }; int main(){ int a = 10; int b = a; //拷贝 Base obj1(10, 20);
123 0
|
Java
浅拷贝与深拷贝
浅拷贝与深拷贝
84 0
|
JSON 数据格式
深拷贝和浅拷贝、及实现方式
深拷贝和浅拷贝、及实现方式
94 0
深拷贝和浅拷贝
类里面会为我们实现默认的拷贝,这个做的是值的拷贝,但是假如对象里的数据成员在堆上开辟了内存资源,如果继续浅拷贝就会导致两根指针指向同一块资源,从而产生内存泄漏问题。但是深拷贝可以解决这个问题,本文将详细介绍深拷贝与浅拷贝。