深浅拷贝

Posted j-luck

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深浅拷贝相关的知识,希望对你有一定的参考价值。

 // 浅拷贝只拷贝最外一层,更深层次对象级别的只拷贝引用
    // 深拷贝拷贝多层,每一级别的数据都会拷贝
    var obj = {
      id: 1,
      name: ‘tom‘,
      msg:{
        age: 18
      },
      color: [‘pink‘, ‘red‘],
      add: null
    }

 

    var o = {}

 

    //    --  浅拷贝
    // for(var key in obj){
    //   o[key] = obj[key];
    // }
    // es6 浅拷贝的语法糖
    Object.assign(o, obj)
    console.log(o)
 
    // 封装函数   --  深拷贝
    newCopy = {}
    function deepCopy(newObj, oldObj) {
      for(var key in oldObj){
        // 判断数值的数据类型
        var item = oldObj[key];
        // 注意 先判断是否是数组,在判断是否是对象 
        // 判断  --  数组
        // 判断  --  对象
        // 判断  --  简单数据类型
        if(item instanceof Array){
          newObj[key] = [];
          deepCopy(newObj[key], item)
        }else if(item instanceof Object){
          newObj[key] = {}
          deepCopy(newObj[key],item)
        }else{
          newObj[key] = item;
        }
      }
    }
    deepCopy(newCopy, obj)
    console.log(newCopy)

以上是关于深浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章

什么是深浅拷贝?如何实现深浅拷贝

python-深浅拷贝

简述深浅拷贝

深浅拷贝

Python的深浅copy

Python3 深浅拷贝