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

相关文章
|
7月前
|
存储 人工智能 前端开发
深拷贝浅拷贝的区别?如何实现一个深拷贝?
深拷贝浅拷贝的区别?如何实现一个深拷贝?
110 0
|
2月前
|
存储 前端开发 JavaScript
浅拷贝和深拷贝的区别?
本文首发于微信公众号“前端徐徐”,介绍了JavaScript中浅拷贝和深拷贝的概念及其实现方法。文章首先解释了数据类型的基础,包括原始值和对象的区别,然后详细介绍了浅拷贝和深拷贝的定义、底层逻辑以及常见的实现方式,如 `Object.assign`、扩展运算符、`JSON.stringify` 和手动实现等。最后,通过对比浅拷贝和深拷贝的区别,帮助读者更好地理解和应用这两种拷贝方式。
82 0
浅拷贝和深拷贝的区别?
|
2月前
|
JavaScript 前端开发 Java
什么是深拷贝,什么是浅拷贝
什么是深拷贝,什么是浅拷贝
63 0
|
6月前
|
安全 Java
深拷贝和浅拷贝的区别
深拷贝和浅拷贝的区别
|
5月前
|
编译器 C++
深拷贝和浅拷贝介绍
这篇文章讨论了C++中的数据拷贝,特别是浅拷贝和深拷贝的概念。对于基本类型和简单对象,拷贝是按位复制,即浅拷贝,类似于`memcpy()`函数的效果。当类包含动态分配的内存或其他资源时,需要显式定义拷贝构造函数以实现深拷贝,确保对象间的独立性。文中通过一个自定义的变长数组类`Array`示例说明了深拷贝的必要性,并展示了不使用深拷贝可能导致的问题。通常,如果类有指针成员,大部分情况需要深拷贝;否则,浅拷贝可能就足够了。文章还提到了在创建对象时需要预处理的情况,如记录对象创建时间或计数,这也需要深拷贝。
|
7月前
|
Java
对引用拷贝,浅拷贝,深拷贝的理解
对引用拷贝,浅拷贝,深拷贝的理解
41 0
|
算法 前端开发
算法练习--深拷贝与浅拷贝
深拷贝与浅拷贝
76 0
|
编译器 C++
【C++】 --- 深拷贝与浅拷贝
【C++】 --- 深拷贝与浅拷贝
72 0
【C++】 --- 深拷贝与浅拷贝
|
Java
浅拷贝与深拷贝
浅拷贝与深拷贝
90 0
|
JSON 数据格式
深拷贝和浅拷贝、及实现方式
深拷贝和浅拷贝、及实现方式
104 0