zoukankan      html  css  js  c++  java
  • 深浅拷贝

     // 浅拷贝只拷贝最外一层,更深层次对象级别的只拷贝引用
        // 深拷贝拷贝多层,每一级别的数据都会拷贝
        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)
     
        // 封装函数   --  深拷贝
        var 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)
       
         //  newCopy = JSON.parse(JSON.stringify(obj))
  • 相关阅读:
    读写文件print函数操作
    协程相关
    线程池
    多线程条件
    ibm动态测试
    ubuntu 之 搜狗拼音安装
    Linux 安装 出现Could not get lock /var/lib/dpkg/lock
    Sql server
    maven 搭建
    EOS
  • 原文地址:https://www.cnblogs.com/J-Luck/p/12932187.html
Copyright © 2011-2022 走看看