zoukankan      html  css  js  c++  java
  • JS实现一个深拷贝

    function deepCopy(originData){
      const newData = originData.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
      for(let key in originData){ // 遍历目标
        if(originData.hasOwnProperty(key)){
          if(originData[key] && typeof originData[key] === 'object'){ // 如果值是对象,就递归一下
            newData[key] = deepCopy(originData[key]);
          }else{ // 如果不是,就直接赋值
            newData[key] = originData[key];
            }
        } 
      }
      return newData;
    }

    试用一下:

    const originObj = {a:'a',b:'b',c:[1,2,3],d:{dd:'dd'}};
    const cloneObj = deepCopy(originObj);
    console.log(cloneObj === originObj); // false
        
    cloneObj.a = 'A';
    cloneObj.c = [4,5,6];
    cloneObj.d.dd = 'DD';
        
    console.log(originObj); // {a:'a',b:'b',c:[1,2,3],d:{dd:'dd'}};
    console.log(cloneObj); // {a:'A',b:'b',c:[4,5,6],d:{dd:'DD'}};
  • 相关阅读:
    (一)单例模式
    mysql数据库知识
    JavaScript
    Spring整合AspectJ的AOP
    Spring-AOP
    JDK代理和CGLIB代理
    mybatis-dao开发
    mybatis-入门
    CSS2.1
    HTML基础
  • 原文地址:https://www.cnblogs.com/cqweb/p/14188289.html
Copyright © 2011-2022 走看看