zoukankan      html  css  js  c++  java
  • js实现对象深拷贝

      首先深拷贝浅拷贝区别:
        深拷贝:深拷贝是将要拷贝的数据拷贝下来,对已拷贝的数据进行操作修改  源数据不会改变
        浅拷贝:浅拷贝是数据的直接赋值操作,对赋值变量进行操作修改  原始数据也会跟着改变
      
      实现思路:
        假设有原始数据 obj = {
          name:'张三',
          age:24,
          children:{
            son:{
              name:'张小三',
              age:3
            },
            daughter:{
              name:'张小小',
              age:1
            }
          },
          address:['北京','上海','深圳'] 
        }
        首先创建一个函数并传入一个参数(要拷贝的原始数据)
        根据传入参数创建控对象或者数组(输出需要)
        对传入参数进行判断,只有当参数是对象形式并且参数不为null进入循环,否则直接赋值
        在循环中调用函数本身并传入当前成员对创建的对象进行赋值
        
        代码:
          function copyDeep(data){
            let copyObj = data instanceof Array? []:{}
            if(typeof data === 'object' && data !== null){
              for(let key in data){
                copyObj[key] = copyDeep(data[key])
              }
            }else{
              copyObj = data
            }
            return copyObj
          }
          let copy_obj = copyDeep(obj)
          copy_obj.name = '李四'
          copy_obj.children.son.name = '李son'
          console.log(obj,copy_obj)
        
        可以试着打印一下直接赋值的情况,看看有什么不一样的地方O0O
    
  • 相关阅读:
    webim-界面细节调整
    使用PHP得到所有的HTTP请求头_还有应答头
    Bootstrap学习的点点滴滴
    asterisk中eyebeam与移动的IMS帐号对接
    总结Ajax跨域调用问题
    Spring【基础】-注解-转载
    Spring-【高阶】注解-转载
    让你的IDEA倍爽
    IDEA的git密码修改
    Idea设置签名
  • 原文地址:https://www.cnblogs.com/ss-jojo/p/15480358.html
Copyright © 2011-2022 走看看