首页 > 其他分享 >5.多种方式实现深拷贝、对比优缺点

5.多种方式实现深拷贝、对比优缺点

时间:2023-03-05 09:23:47浏览次数:32  
标签:obj 优缺点 JSON let key var 拷贝 对比

前情提要

深拷贝:拷贝的是对象或者数组内部数据的实体,重新开辟了内存空间存储数据;
浅拷贝:拷贝的是引用类型的指针,副本和原数组或对象指向同一个内存;

①递归方式

比较全面的深拷贝,缺点是较为繁琐

function deepClone(obj) {
    var target = {};
    for(var key in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, key)) {
            if (typeof obj[key] === 'object') {
                target[key] = deepClone(obj[key]); 
            } else {
                target[key] = obj[key];
            }
        }
    }
    return target;
}

②JSON.parse(JSON.stringify(obj))

满足一般使用场景,但无法实现对象中方法(fountion)的深拷贝

let obj = {
    id: 1,
    name: '张三',
    age: 10,        
}
let newObj = JSON.parse(JSON.stringify(obj))

③jQuery的extend方法实现深拷贝

④Object.assign  和 扩展运算符   两者都是 只有一级属性为深拷贝,二级属性后就是浅拷贝

let obj = {
    id: 1,
    name: '张三',
    age: 10,        
}
let newObj = Object.assign({}, obj)

var obj = {
        a: 1,
        b: 2
      }
 
var obj1 = {...obj}

⑤数组使用数组方法进行深拷贝 concat、slice

  只有一级属性为深拷贝,二级属性后就是浅拷贝,如[1,2,3,[1,2,3]]

 var arr1 = [1, 2, 3, 4]
 var arr2 = arr1.concat()
 var arr3 = arr1.slice(1)

 

标签:obj,优缺点,JSON,let,key,var,拷贝,对比
From: https://www.cnblogs.com/alwaysrun/p/17179790.html

相关文章

  • 1.多种方式数组去重、扁平化,求最值,对比优缺点
    首先了解一下什么是数组扁平化?将一个嵌套多层的数组Array(嵌套可以是任何层数)转换为只有一层的数组。数组去重先总结数组的方法:pop、push、shift、unshift、sort、splice......
  • Python利用模糊哈希实现对比文件相似度详解
    导读对比两个文件相似度,python中可通过difflib.SequenceMatcher/ssdeep/python_mmdt/tlsh实现,在大量需要对比,且文件较大时,需要更高的效率,可以考虑模糊哈希,本文就来和大......
  • 实现js继承的几种方式以及他们的优缺点
    7.实现继承的几种方式以及他们的优缺点①类式继承(构造函数) varfather=function(){  this.age=52;  this.say=function(){   alert('helloiam'......
  • 适用于 .NET 的开源文本差异对比组件
    适用于.NET的开源文本差异对比组件DotNet大王源码资料,微信zhaoxi965,有问必复​关注他 1人赞同了该文章对于开发人员来说,Git是我们经常使用......
  • 2.4G收发一体芯片NRF24L01P跟国产软硬件兼容 SI24R1对比
    超低功耗高性能2.4GHzGFSK无线收发器芯片Si24R1Si24R1是一颗工作在2.4GHzISM频段,专为低功耗无线场合设计,集成嵌入式ARQ 基带协议引擎的无线收发器芯片。工作频率范......
  • 零拷贝
    1.什么是零拷贝零拷贝是指计算机在执行IO操作的时候,CPU不需要将数据从一个存储区复制到另一个存储区,进而减少上下文切换以及CPU拷贝的时间,这是一种IO操作优化技......
  • 跨境电商独立站到底有什么优缺点?
    无论你在哪个行业,都有优点和缺点,正如人们常说的,人无完人。那么我们就来谈谈最近比较多人关注的跨境电商独立网站的缺点:1.这个过程很麻烦。跨境电商独立站的有效周期需要比......
  • Kubernetes DevOps CD工具对比选型
    目录KubernetesDevOpsCD工具对比选型一、Flux二、ArgoCD三、JenkinsX四、方案比较KubernetesDevOpsCD工具对比选型一、Flux1.1安装Flux安装和部署其他Pod的方式......
  • XGBoost和LightGBM时间序列预测对比
    GBoost和LightGBM都是目前非常流行的基于决策树的机器学习模型,它们都有着高效的性能表现,但是在某些情况下,它们也有着不同的特点。XGBoost和LightGBM简单对比训练速度Li......
  • 自适应均衡matlab仿真,对比RLS,LMS以及NLMS的均衡前后星座图效果,调制采用4QAM,16QAM,
    1.算法描述       在无线通信系统中,由于多径效应及码间干扰的存在,信号误码率会升高。均衡技术是一种对抗码间干扰的重要技术。本文将介绍LMS均衡和RLS均衡两种均衡......