zoukankan      html  css  js  c++  java
  • 浅拷贝和深拷贝的一些理解

    <script>
            /*
                1,浅拷贝只拷贝一层,更深层次对象级别的只拷贝引用
                2,深拷贝拷贝多层,每一级别的数据都会拷贝 
             */
             var obj = {
                 id:1,
                 name:'andy',
                 msg: {
                     age:18
                 },
                 color:['pink','red']
             }
             //此处为浅拷贝  只能拷贝最外一层 对于深层次的对象只是共享了地址
             var o = {}
            //  for(var k in obj){
            //      //k 属性名,obj[k] 属性值
            //      o[k] = obj[k]
            //  }

            //es6语法浅拷贝
            // Object.assign(o,obj)
            //  console.log(o);
             

             //深拷贝  对于深层次对象重新开辟空间,不是单纯的共享一个对象
                function deepCopy(newobj,oldobj){
                    for(var k in oldobj){
                        //判断数据类型为哪种数据类型
                        var item = oldobj[k];
                        //是否为数组   数组最先判断,因为数组也是对象,先写object会覆盖对数组的判断
                        if(item instanceof Array){
                            newobj[k] = []
                            deepCopy(newobj[k],item)
                        //是否为对象
                        }else if(item instanceof Object){
                            newobj[k] = {}
                            deepCopy(newobj[k],item)
                        //简单数据类型
                        }else{
                            newobj[k] = item
                        }
                    }
                }
                deepCopy(o, obj)
                console.log(o);
  • 相关阅读:
    精讲响应式WebClient第6篇-请求失败自动重试机制,强烈建议你看一看
    dubbo实战之三:使用Zookeeper注册中心
    dubbo实战之二:与SpringBoot集成
    dubbo实战之一:准备和初体验
    树莓派4B安装官方Ubuntu20 Server版(64位)
    JUnit5学习之八:综合进阶(终篇)
    纯函数
    函数式编程基本概念
    vscod使用指南
    实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原
  • 原文地址:https://www.cnblogs.com/xu3241/p/13269602.html
Copyright © 2011-2022 走看看