JavaScript如何实现深拷贝

小编给大家分享一下JavaScript如何实现深拷贝,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联公司从2013年创立,先为广昌等服务建站,广昌等地企业,进行企业商务咨询服务。为广昌企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

深拷贝

递归的完整版本(考虑到了Symbol属性):

const cloneDeep1 = (target, hash = new WeakMap()) => {
  // 对于传入参数处理
  if (typeof target !== 'object' || target === null) {
    return target;
  }
  // 哈希表中存在直接返回
  if (hash.has(target)) return hash.get(target);


  const cloneTarget = Array.isArray(target) ? [] : {};
  hash.set(target, cloneTarget);


  // 针对Symbol属性
  const symKeys = Object.getOwnPropertySymbols(target);
  if (symKeys.length) {
    symKeys.forEach(symKey => {
      if (typeof target[symKey] === 'object' && target[symKey] !== null) {
        cloneTarget[symKey] = cloneDeep1(target[symKey]);
      } else {
        cloneTarget[symKey] = target[symKey];
      }
    })
  }


  for (const i in target) {
    if (Object.prototype.hasOwnProperty.call(target, i)) {
      cloneTarget[i] =
        typeof target[i] === 'object' && target[i] !== null
        ? cloneDeep1(target[i], hash)
        : target[i];
    }
  }
  return cloneTarget;
}

以上是“JavaScript如何实现深拷贝”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


新闻名称:JavaScript如何实现深拷贝
网站地址:http://bzwzjz.com/article/jgdoep.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站建设 网站制作公司 手机网站制作 网站制作公司 重庆网站建设 移动网站建设 外贸营销网站建设 营销型网站建设 成都网站建设推广 成都商城网站建设 网站制作报价 定制级高端网站建设 成都网站制作 高端网站设计推广 手机网站建设 成都定制网站建设 成都网站建设 成都网站建设 成都网站设计 自适应网站建设 泸州网站建设 成都企业网站制作