zoukankan      html  css  js  c++  java
  • 深拷贝和浅拷贝及应用场景

    深浅拷贝,都是拷贝对象内的数据到新对象,新旧对象内的数据相同。

    1.浅拷贝

    只拷贝对象的第一层属性,如果对象中还有对象,只是拷贝的内存地址(引用),两者修改会相互影响。用于对象中都是基本数据类型的情况。

    2.深拷贝

    拷贝对象的多层属性,如果对象中还有对象,会继续拷贝,使用递归实现。

    3.深浅拷贝的实现

    浅拷贝:

    function copy(oldObj) {
            let newObj = {};
            for (let k in oldObj) {
              newObj[k] = oldObj;
            }
            return newObj;
          }

    深拷贝:

    function deepCopy(oldObj) {
            let newObj = {};
            for (let k in oldObj) {
              if (oldObj[k] instanceof Array) {
                newObj[k] = [];
                newObj[k] = deepCopy(oldObj);
              } else if (oldObj[k] instanceof Object) {
                newObj[k] = {};
                newObj[k] = deepCopy(oldObj);
              } else {
                newObj[k] = oldObj[k];
              }
            }
            return newObj;
          }

     4.深浅拷贝的应用场景

    查看很多网友分享的业务需求后,我觉得深浅拷贝的应用场景可以用一句话总结:我想要使用这个对象内的数据,但是不想修改原本的对象内的数据内容时,使用深浅拷贝来复制数据,并对新的对象内的数据进行操作。




  • 相关阅读:
    小猪存钱罐
    SSL与HTTPS协议
    KVM之XFS磁盘扩容
    vue学习笔记(一)
    ant打包总结
    github上传代码总结
    java中map遍历的总结
    angularjs初学总结
    angularjs常用指令
    github上传代码总结
  • 原文地址:https://www.cnblogs.com/mandymm/p/13967633.html
Copyright © 2011-2022 走看看