zoukankan      html  css  js  c++  java
  • 深刻理解 引用类型、浅拷贝、深拷贝

    简单粗暴的理解,就是对象都是引用类型 但是有的时候需要完全复制一个新的对象,操作新对象的时候不会改变原对象,这个时候就有了浅拷贝和深拷贝,

    浅拷贝,拷贝的只是对象的一级内容,而子集内容还是引用类型,会随着新对象值的改变而改变,

    深拷贝,完全拷贝出一个一模一样但是 没有任何关联的对象。

    var obj ={
            name:1,
            age:{
                a:2,
                b:{
                    c:123456
                }
            }
        };
    var obj2 = copy(obj);
    function copy(obj){
            var newobj = {};
            for(arr in obj){
                newobj[arr] = obj[arr]
            }
            return newobj;
         }
               
    View Code

    这里例子就是 浅拷贝  他的二级  obj2.age.a  还是引用关系 。

    function copy(obj){
            var newobj = {};
            for(arr in obj){
                if(typeof obj[arr] === 'object') {
                    newobj[arr] =  copy(obj[arr])
                } else {
                    newobj[arr] = obj[arr]
                }
                newobj[arr] = obj[arr]
            }
            return newobj;
         }
    View Code

    深拷贝 使用递归将所有子集 都打断引用关系

    981900309@qq.com

  • 相关阅读:
    匿名变量
    Vue父子组件传值与非父子传值
    TCP三次握手分析
    @media screen 响应式布局
    H5新增多媒体标签
    npm+node+vue配置一套带走
    vue+echarts全国疫情地图
    js本地时间格式化
    vue iview分页
    Vue打包后访问静态资源路径问题
  • 原文地址:https://www.cnblogs.com/caihua0405/p/11007881.html
Copyright © 2011-2022 走看看