深度克隆

在 STM32CubeIDE 中针对 STM32F407 移植 ThreadX 在 STM32CubeIDE 中针对 STM32F407 移植 ThreadX,不依赖盗版破解的Keil MDK、IAR等软件。 阅读详情

基本类型(值类型)没有指向空间地址,所以基本类型没有深度浅度克隆之说,引用类型才有深度浅度克隆之说

1.引用类型基于json字符进行深度克隆

let obj1 = {name:'fuheng'}
let obj2 = JSON.parse(JSON.stringify(obj1))
console.log(obj1 === obj2);//false
obj2.name='fuyi';
console.log(obj1);//{ name: 'fuheng' }

let arr1=[1,2,3,{name:'fuarr'}]
let arr2 = JSON.parse(JSON.stringify(arr1))
arr2[3].name='fuNewArray';
console.log(arr1[3].name);//fuarr

2.基于Object.prototype.toString.call(obj)判断数据类型,进行递归赋值

//获取传入变量的类型 例如[Object Array] => Array
function getObjClass(obj) {
    let result = Object.prototype.toString.call(obj).slice(8, -1);
    if (result === 'Null') {
        return 'Null';
    } else if (result === 'Undefined') {
        return 'Undefined';
    } else {
        return result;
    }
}

function deepClone(obj) {
    let result, objType = getObjClass(obj);
    if (objType === 'Object') {
        result = {};//如果是对象,定义为对象类型
    } else if (objType === 'Array') {
        result = [];//如果是数组,定义为数组类型
    } else {
        return obj; // 如果是其他数据类型不复制,直接将数据返回
    }
    // 遍历目标 对象/数组
    for (let key in obj) {
        let value = obj[key];
        if (getObjClass(value) === "Object" || getObjClass(value) === 'Array') {
            result[key] = deepClone(value);
        } else {
            result[key] = obj[key];
        }
    }
    return result;
}


let obj3 = {username: 'fuheng',age: 18, sex: {option1: '男', option2: '女'}};
let obj4 = deepClone(obj3);
console.log(obj4 === obj3);//false
obj4.sex.option1 = '不男不女'; // 修改复制后的对象不会影响原对象
console.log(obj4);
console.log(obj3);
手把手教你学Simulink——基于重复控制(RC)的并网逆变器场景实例:基于RC的单相并网逆变器仿真 本次教程深入剖析了重复控制(RC)在单相并网逆变器中的应用,解决了周期性谐波抑制这一核心难题。核心收获RC是谐波抑制的“核武器”:它利用内模原理,对所有周期性谐波提供无限大增益,实现理论上无静差的跟踪和抑制。PI+RC是黄金组合:PI提供快速响应,RC提供稳态精度,二者结合,兼顾了动态与稳态性能。结构简单,效果卓越:相比多个PR控制器,RC仅需一个模块,即可抑制所有谐波,设计简洁。电能质量的终极追求,是波形的纯净。重复控制,如同一位不知疲倦的校对员它记住每一次错误(上一周期的误差), 阅读详情

相关推荐

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月10日

前文:SABRE 3D系列机台简介本章节详细阐述了在维护期间锁定电气、机械、热力学及重力组件以及化学管线输入的锁定操作流程,旨在降低人员受伤风险。p42~p55。

weixin_46735260的博客 1614

深度克隆与浅度克隆

javascript中对象的深度克隆 深度克隆:原不变 浅克隆:通过“=”赋值操作;基础类型:值传递;对象:引用。 以下number function string 执行的浅克隆(赋值操作),但是结果表现形式与深度克隆一致,都是原不变,相当于深克隆。 浅==深 对于基础类型可以理解赋值操作原来的不变,但是function作为引用,原也不变,是因为,函数的克隆会在内存单独开辟空间,互不影

lulalahappy123的专栏 1105

2023-07-04 Fast-Lio论文中公式(6)与BCH公式中近似雅可比公式的一致性推导

将(1)式代入(6)式,就有。

wmorries的博客 475

JavaScript 浅层克隆和深度克隆

浅层克隆和深度克隆1 相关知识点 浅克隆就是将栈内存中的引用复制一份,赋给一个新的变量,本质上两个指向堆内存中的同一地址,内容也相同,其中一个变化另一个内容也会变化。深克隆就是创建一个新的空对象,开辟一块内存,然后将原对象中的数据全部复制过去,完全切断两个对象间的联系。区别:浅克隆和深克隆最大的区别就是对引用值的处理了,即浅克隆之后你改我也改,深克隆之后你改我不改。2 浅层克隆3 深度克隆 3.4 hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性,即是否有指定的键

Yuki_yuhan的博客 3853

cs188Inference in Bayes Nets(贝叶斯网络的推理)

cs188Inference in Bayes Nets贝叶斯网络的推理Question1(3 points):Bayes Net StructureQuestion2(1 points):Bayes Net ProbabilitiesQuestion 3(5 points):Join FactorsQuestion4(4 points):EliminateQuestion5(4 points):NormalizeQuestion 6(4 points):Variable EliminationQuesti

weixin_46582817的博客 1673

深度强化学习 | 基于DQN实现Flappy Bird游戏与分析

在Flappy Bird中,玩家需要通过控制小鸟安全穿过随机长度的水管来得分。本文基于深度Q网络DQN来实现Flappy Bird游戏的自主探索与学习

FRIGIDWINTER的博客 5912

啥是对象的浅度克隆和深度克隆?

深度克隆 or 浅度克隆

果子爸聊技术 1万+

AD9361功能介绍和使用

AD9361使用分数分频锁相环(PLL)来产生发射机和接收机本地振荡器(LO)频率和BB PLL。BB PLL 可用于数据转换、数字滤波器和 |/O 端口。PLL的参考时钟可以由外部振荡器或外部晶体(XO)和数字可编程片内可变电容提供,电容微调产生参考时钟频率,XO和微调电容的组合统称为DCXO。有多个天线输入的分集系统。接收链数据首先经过低噪声放大器(LNA),然后是同相(1)和正交(Q)放大器,混频器和频带整形滤波器,可将接收到的信号下变频为基带以进行数字化。时分双工(TDD)和频分双工(FDD)。。。

wangjie36的博客 1万+

js深度克隆和浅度克隆

“使用JavaScript深度克隆一个对象。” 这是一个出现概率很高的面试题,下面就来总结下,二者的区别以及其代码。科普一下: js一般有两种不同数据类型的值: 基本类型(包括undefined,Null,boolean,String,Number),按值传递; 引用类型(包括数组,对象),按址传递,引用类型在值传递的时候是内存中的地址。1.概念浅度克隆:基本类型为值传递,对象仍为引用传递。

匪鉴 2724

128、点云配准与ICP:经典配准算法与深度学习配准

上周调试一台双臂协作机器人,左手持结构光相机扫描桌面上的随机堆叠工件,右手准备执行抓取。问题出在“对齐”这一步——相机扫描得到的点云和CAD模型点云之间差了大约15度的旋转,导致抓取姿态计算出来直接怼到桌面上。我第一反应是“ICP跑一下不就行了”,结果跑了三分钟,误差纹丝不动,甚至越迭代越发散。后来查了日志才发现,初始位姿给得太离谱,ICP直接掉进了局部最优。这个场景太典型了——很多人以为点云配准就是调个ICP库函数,实际工程里坑比想象中多得多。今天这篇笔记,咱们把点云配准这件事从头捋一遍。

sundong_81的博客 42

YOLO26优化:AAAI2026 | 融合PartialNet Block的C3k2-YOLO高效目标检测网络 | 轻量化涨点设计

PartialNet Block 结合YOLO26的C3k2模块,进行二次创新。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 592

List深度克隆

/** * @Description: List深度克隆 * @Param: source 源集合 * @Return: java.util.List<T> * @Author: CWR * @Date: 2019/12/26 16:17 */ public static <T> List<T> deepCopy(List<T> sou...

BigpotR 716

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

js实现深度克隆

深度克隆 克隆或者拷贝分为2种: 浅度克隆 、 深度克隆 。 浅度克隆 :基本类型为值传递,对象仍为引用传递。 深度克隆 :所有元素或属性均完全克隆,并于原引用类型完全独立,即,在后面修改对象的属性的时候,原对象不会被修改。 实现深度克隆: 代码及注释: // 参数deep: true 表示深度克隆 否则 浅克隆 Object.prototype.clone = function(deep){ // 获取到调用函数的对象 // this

qq_53489791的博客 1889

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

如何在 JavaScript 中进行深度克隆?

JSON 方法适用于简单对象的深度克隆,但不支持函数、日期、正则表达式等。手动递归克隆是最灵活的方式,可以处理多种类型,但需要编写额外的代码。****是现代浏览器中的原生方法,支持更多的数据类型,但兼容性较差。**第三方库(如 Lodash)**提供了可靠的深度克隆实现,适用于复杂应用,但增加了项目依赖。在实际项目中,根据需求选择适合的方法。如果你的项目依赖较少,且需要处理复杂数据类型,手动实现或者使用是不错的选择。

向着太阳迎着光 1710

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

深度克隆(js)

使用深度克隆的原因:当用浅克隆克隆 <script> function clone(origin, target) { var target = target || {}, //用来判断该对象得属性是数组还是对象 str = Object.prototype.toString, arr = "[object Array]" for (v

weixin_45805570的博客 314

js对象深度克隆

什么是深度克隆,通俗的说:就是在给你一个对象的前提下,你创建一个和这个对象一模一样的对象,所有属性和值都相等,并且修改新对象的属性不会影响旧的对象。 网上常见的两种比较简洁的方式: 方式1:这个方式像极了我们的原型继承,所以我暂时叫他原型式克隆

hnyysly的专栏 1211

JS深度克隆代码实现

js深度克隆js对象组成说对象的深度克隆之前,要先明白JS 中对象的组成。 以一句话说js中一切皆对象具体数据类型分为两种: - 原始数据类型 - 引用数据类型 原始数据类型:其中存储的是对象的实际地址。eg. number、string、boolean、还有两个特殊的null、undefined 引用数据类型:其中存储的是对象的引用地址。eg. array、fu

哎 8111

关于javascript的深度克隆

js的深度克隆可以是一个非常深入的话题,如果能把深度克隆函数写得比较好,基本可以认为对js这门语言掌握的程度就很高了。 先帖两个参考文章,后面再慢慢填坑吧: 参考文章1:考虑了一些基本的情况,例如function原型、REG对象、自引用等。 参考文章2:考虑得更多,增加了内存爆栈的情况。 参考文章3:相对比较基础,从实用角度,可以使用jquery.extent(),可以使用loadsh工具库。 对...

iamlongalong的博客 259

浅度克隆和深度克隆

优快云-markdown编辑器 使用示例 目录 用 [TOC]来生成目录: 文章目录优快云-markdown编辑器 使用示例目录快捷键Markdown及扩展表格定义列表代码块自定义字体颜色(github中看不到颜色):删除线数学公式UML 图:离线写博客浏览器兼容在csdn Markdown模式下的显示效果: 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体...

hyly_zhard的博客 645

JS的深度克隆,利用构造函数原型深度克隆

我爱撸码,撸码使我感到快乐!大家好,我是Counter。今天来写写,JS中的深度克隆,这个在笔面试中,考的还是比较多的,主要是对象与数组的赋值,如果直接赋值的话,那么得到的是对象或者数组在堆里的地址,那么原有的的数据修改的话,那么克隆的数据也会随着修改,这就是浅克隆,所以这边就要使用到枚举,然后再每一项赋值,这样就可以完成一份深度克隆,这样原对象里修改属性,如果你在这对象修改之前已经克隆的话,那么...

weixin_34080903的博客 125

js深度克隆

整理以前的笔记,看到JS深度克隆觉得挺有趣,在总结一下:   深度克隆某个对象就是克隆对象的“自有属性”以及它的“原型链”,对于克隆原型链最好的办法就是使用它的构造函数,我们知道每个构造函数都有一个prototype属性指向它的原型对象,当然,原型对象也有一个constructor属性指回构造函数。所以利用子代对象的constructor( )方法可以得到子代对象的构造函数,再次利用构造函数创建

luca的博客 1108

javascript浅度克隆、深度克隆

1.对象属性浅度克隆 let clone = Object.assign({}, target) 2.对象属性深度克隆 简单的深克隆可以使用JSON.parse()和JSON.stringify(),这两个api是解析json数据的,所以只能解析除symbol外的原始类型及数组和对象 let cloneObj = JSON.parse(JSON.stringify(target)) 3....

m0_37293343的博客 296

关于JS的深度克隆

我们都知道对象分为深度克隆和浅度克隆,深度克隆是把属性和值全部都克隆成为另一个整体,而浅度克隆只是克隆对象的引用地址,引用地址还是相同的,不会发生变化。例如 对象的浅克隆 let obj={ name:'ligo', age:18 } let obj2=Object.assign(obj) obj2.work='study' console.log(obj,obj2) //obj {age: 18,name:

weixin_44926748的博客 635

java map 深度克隆_如何深度克隆一个对象

如何深度克隆一个对象在我们日常工作中经常会遇到需要去克隆一个对象比如多个地方用到的公共的图表基本参数的配置相信很多人会想到用 Object.assign, JSON.stringify 和 JSON.parse 方法去克隆一个对象,这个可以明确告诉大家这些都是些不靠谱的浅度克隆。我们先来试一下 Object.assign 在控制台执行下列操作接下来我们看下 JSON.stringify 和 JSO...

weixin_29282577的博客 1071
上一篇: HTTP网络状态码
下一篇: 子div在父div中水平垂直居中
「已注销」
博客等级 码龄7年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值