码迷,mamicode.com
首页 > 其他好文 > 详细

深浅拷贝

时间:2020-05-21 17:45:26      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:OLE   name   数值   lse   assign   sig   多层   封装   bsp   

 // 浅拷贝只拷贝最外一层,更深层次对象级别的只拷贝引用
    // 深拷贝拷贝多层,每一级别的数据都会拷贝
    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)

深浅拷贝

标签:OLE   name   数值   lse   assign   sig   多层   封装   bsp   

原文地址:https://www.cnblogs.com/J-Luck/p/12932187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!