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))
  • 相关阅读:
    MySQL百万级数据量分页查询方法及其优化
    聊一聊二维码扫描登录原理
    在吗?认识一下JWT(JSON Web Token) ?
    怎样和领导汇报工作,更容易获得升职加薪?谈谈和领导汇报的艺术
    javascript sleep pause 实现
    google 根据地址得ip 并显示
    javascript 闭包
    javascript 对象 telecom
    javascript 对象
    google maker 标注
  • 原文地址:https://www.cnblogs.com/J-Luck/p/12932187.html
Copyright © 2011-2022 走看看