浅谈JS深拷贝与浅拷贝

C++:实现获取CPU温度(附完整源码) 阅读详情

浅谈JS深拷贝与浅拷贝

前言

昨天复习了下JS,看到了以前打的深拷贝与浅拷贝代码,我整理了下。
一提到拷贝,大家可能想到的是这样:

let jg = { name: "wang", url: "www.jianng21.top" }
    let obj1 = jg;//赋值 使用同一内存空间 
    obj1.name = "wangwang"  //改变obj1 jg.name也会被改变

这是我们不希望的,所以赋值的这种方法不可取

浅拷贝

方法一:

    let obj2 = {
        name:jg.name,
        url:jg.url,
    }
    obj2.name = "wangwangwang"
    console.log(obj2)

方法二:

 	//2 for in 循环
    let obj3 ={};
    for(const key in jg)
    {
        obj3[key] = jg[key]
    }
    obj3.name = "wangkejiang";
    console.log(obj3);

方法三:

	//3 Object.assign
    let obj4 = {}
    Object.assign(obj4,jg)
    obj4.name = "ww"
    console.log(obj4);

方法四:

//4.点语法 ...
    let obj5 = {...jg}
    obj5.name = "jj"
    console.log(obj5)

上面这几种方法都能实现对一个对象的拷贝,在改变拷贝对象的值时,原的对象不会被改变,但是,如果被拷贝的里面又子对象,上面这种方法是无法拷贝子对象的!比如

let jg = {
        name: "wang",
        url: "www.jianng21.top",
        others: {
            sex: "man"
        }
    }
let obj5 = { ...jg }
    obj5.name = "jj"
    obj5.others.sex = "woman"
    console.log(obj5)

    console.log(jg);

在这里插入图片描述
总结:以上这4种方法,不能拷贝对象中的子对象和方法,就称之为浅拷贝。

深拷贝

既然上面那几种方式不能拷贝对象中的子对象和方法,那么怎么解决呢?废话不多说,直接上代码!

 let obj = {
        user: {
            name: "wang"
        },
        arr: [],
        professional: "student"
    }

function deepcopy(o) {
        let res = o instanceof Array ? [] : {};
        for (const [key, value] of Object.entries(o)) //const[key,value]解构语法
        {
            res[key] = typeof value == "object" ? deepcopy(value) : value;
            //此处的typeof 检测数据类型 输出为一下几个 
            //undefined object boolean number string function symbol

        }
        return res;
    }
    let obj3 = deepcopy(obj);
    obj3.user.name = "Tony";
    obj3.arr.push("123");

    console.log(obj3)
    console.log(obj)

在这里插入图片描述

完美解决!!

利用C/C++实现硬盘和CPU温度获取的详尽指南 通过本文的详细介绍,我们深入了解了如何使用C/C++实现计算机硬盘和CPU的实时温度获取。从硬盘温度获取的基础知识、S.M.A.R.T.技术的应用,到CPU温度获取的系统API调用和跨平台实现,我们全面解析了温度获取的实现过程,并通过丰富的示例代码展示了具体的实现细节。在实际项目中,温度监控是保障系统稳定性和性能的重要环节。掌握了温度获取的方法后,您将能够在系统监控、硬件检测、性能优化等领域大展身手,为您的项目提供强有力的技术支持。 阅读详情

相关推荐

用驱动获取cpu的温度

用驱动获取cpu的温度,针对intel的cpu

用C/C++获取CPU温度总结(一)

最近在研究怎样获取CPU的温度,网上也有一些办法,但都不算完整,没有清晰的解决方案,现在把我的方法完整的说一下,其实是很简单的东西,没有什么很复杂的。有些地方班门弄斧,各位大侠多多担待。。因为我用的是Intel的CPU,所以只做了Intel的,APU的没办法测试,感兴趣的可以研究。 Intel从Core Duo处理器开始,每一个物理核心都有一个温度传感器(DTS-Digital Thermal

zhangweilst的专栏 3万+

获取CPU温度(总结)

1. 使用不同方式读取到的温度分析 2. 最重要的是参考Intel手册通过读取MSR来读取DTS(Digital Thermal Senser)的值来获取CPU温度 3. 大概讲述了通过WMI,Win32_TemperatureProbe Class,以及WinIO的方式 4. 资源包中包括:Win32_TemperatureProbe class, WinIO,Intel用户手册,Io.dll,Ring0(获取Ring0权限),Core Temp工具,Coretemp.c(Linux内核包中的代码)以及自己写的自测程序CPUTemperature

windows获取CPU温度

CPU温度,电脑温度,windows硬件温度

dm569263708的专栏 9197

open-web UI 实用指南

open-web UI 类似于chatgpt的界面,可以私有化模型本地部署,也可以用商业模型.本文只是用开源模型. 它以实现多模态AI聊天 , AI 翻译 , 语音转文本, 文本转语音, 文生图,代码助手,可谓利器。

szmars的博客 3万+

省三医院新门诊大楼网络安全建设项目实施方案

为了响应国家建设数字医疗,构建医联网、医共体的号召,新门诊大楼现有计算机网络,实现各门诊室、药房、医学影像科室及后勤科室的终端数据互通。在互联网出口以三层模式部署两台防火墙,作为连接公网的出口设备;出于等保合规和自身业务安全的考虑,现需要该网络上通过网络安全设备实现安全建设。公网出口防火墙,配置攻击防御策略,防御互联网上的病毒进入内网。公网出口防火墙配置攻击防御策略,防御外网对内网的入侵行为。服务器取得边界防火墙,配置攻击防御策略,入侵防御策略。公网出口防火墙配置入侵防御策略,防御外网对内网发起的D。

m0_63645854的博客 2013

浅谈js中的浅拷贝和深拷贝

在JavaScript中,数据类型可以分为两大类:基本类型(也称为原始类型)和复杂类型(也称为引用类型)

2301_76607771的博客 2141

Dify+MCP Server打造禅道AI智能助手

Dify AI与MCP Server结合打造的禅道AI智能助手,实现了项目管理智能化升级。该方案通过大语言模型和自动化工作流,提供四大核心功能:1)自动化报表生成,支持多维度数据统计与可视化;2)禅道系统管理操作,简化产品/项目/任务管理流程;3)基于知识库的智能问答系统;4)数据库灵活查询与可视化输出。系统采用分层架构,通过MCP协议实现AI与数据源解耦,解决了传统禅道在数据孤岛、工具碎片化等问题。实际应用验证了其在用户管理、任务创建、Bug处理等场景的高效性,显著提升了项目管理效率。

oNew_Lifeo的博客 1708

【JS】浅谈浅拷贝与深拷贝

我们对数组或者对象进行操作的时候,有时并不想操作原始对象,就会将对象或数组复制出新一份,在新的一份中进行操作。深拷贝与浅拷贝是常用于对象或数组进行复制。浅拷贝引用同一块内存,会影响原数据基本类型值不变,引用类型会改变实现方式:… , Object.assign() , slice(),concat()深拷贝新开辟内存,不影响原数据基本类型和引用类型不改变循环递归, JSON.stringify() , loadsh库中_.cloneDeep()

菜就多练 1388

ubuntu22.04 安装部署 openclaw

ubuntu22.04 安装部署 openclaw

nalanxiaoxiao2011的博客 974

Python和Spyder:一个完美的编程组合

而Spyder作为一个专门为科学计算和数据分析而设计的IDE,提供了高效的开发环境和丰富的工具。无论是初学者还是专业开发者,Python和Spyder都能满足他们的需求,并为他们的工作带来便利和效率。本文将探讨Python和Spyder之间的关系,以及它们如何相互配合,提供一流的编程体验。每个工具都有其特定的优势和适用场景,开发者可以根据自己的需求选择合适的工具。而Spyder作为一个专门为科学计算而设计的IDE,提供了编写、调试和执行Python代码的环境。

CodeHeroicX的博客 1123

浅谈JavaScript的深拷贝与浅拷贝

浅谈JavaScript的深复制与浅复制

qq_37607502的博客 1282

zemax 如何编译用户自定义DLL(含VS下载教程)

zemax 如何编译用户自定义DLL(含VS下载教程)

weixin_72050316的博客 491

浅谈一下js的浅拷贝和深拷贝

对浅拷贝和深拷贝的理解

qq_61955502的博客 1316

关于 SAP UI5 应用 url 中的特殊符号 # 的作用介绍

符号在 SAP UI5 的 URL 中不仅仅是一个分隔符,更是动态路由、状态管理和深链接的关键所在。通过合理使用,开发者可以实现高效、流畅的用户体验,同时保持系统的可维护性和扩展性。通过 SAP UI5 提供的灵活路由机制,企业应用可以轻松实现复杂导航需求,同时为用户提供直观的交互体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 407

如何将 Fiori Elements Object Page Header 工具栏里按钮用 JavaScript 代码设置成禁用状态

本文介绍了如何在SAP Fiori Elements应用中动态控制Object Page工具栏按钮的可用状态。通过UI5 Inspector工具分析发现,这些按钮的enabled属性都双向绑定到/ui/enabled模型字段。在StatusExt.controller.js中,通过获取按钮ID前缀拼接完整控件ID,使用setEnabled(false)方法即可禁用按钮。关键点包括:1)使用extensionAPI获取视图ID前缀;2)注意事件回调中的this上下文绑定;3)通过修改模型字段可同步更新所有绑定

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 370

浅谈JavaScript深拷贝,浅拷贝

浅拷贝和深拷贝概念 简单来说, 浅拷贝就是只拷贝一层,深层次的对象级别的就拷贝引用, 深拷贝就是层层拷贝,每一级别的数据都会拷贝出来; 如何区分深拷贝与浅拷贝?简单点来说就是,假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明是浅拷贝,如果B没变,那就是深拷贝。深入点来说,就是B复制了A,如果B复制的是A的引用,那就是浅拷贝,如果B复制的是A的本体,那就是深拷贝。在深入了解深拷贝和浅拷贝之前,我们先得了解堆栈和数据类型。 堆栈和数据类型 在js中,数据类型分为两种,基本类型和引用类型。基

ChinaW_804的博客 363

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

浅谈javascript深拷贝和浅拷贝

深浅拷贝在我们平常开发中也会经常用到,下来我们来具体谈谈深浅拷贝。 深浅拷贝初步认识 我们知道javascript中一般有按值传递和按引用传递两种复制方式: 按值传递的是基本数据类型 Number,String,Boolean,Null,Undefined,Symbol,一般存放于内存中的栈区,存取速度快,存放量小; 按引用传递的是引用类型 Object,Array,Function,一般存放与内存中的堆区,存取速度慢,存放量大,其引用指针存于栈区,并指向引用本身。 我们经常说的深浅拷贝是针对引用类

weixin_37989623的博客 446

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

浅谈JS浅拷贝与深拷贝

1、数据类型 ​ 在JavaScript中,数据类型可以分为基本数据类型和引用数据类型。 基本数据类型包括:Undefined、Null、Number、String、Boolean以及ES6新加的Symbol。 引用数据类型包括Array和Object等。 ​ 因为基本数据类型操作比较频繁,并且所占空间较小,所以是存放在栈中,提升变量的访问速度和效率。而引用数据类型所占的空间比较大,不适合存放在栈中,故将数据实体存放在堆中,在栈中只存放该数据的地址,访问引用数据类型的时候先通过栈中的地址来找到堆中的数据

偉ing的博客 404

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

浅谈js的深拷贝和浅拷贝

老生常谈js的拷贝问题,今天就简单来聊聊js的深拷贝和浅拷贝的问题,故事要从js对数据的存储开始说起。话说很久很久之前。。。。。。,js的存储分为堆(heap)和栈(stack)两种存储类型。 一、数据的存储方式,基本数据类型的数据存储在栈中,引用类型的数据存储在堆中,引用类型数据的堆的地址存储在栈中。 ...

first_shun的博客 516

浅谈js中的深拷贝和浅拷贝

3.遍历它,然后通过hasOwnProperty判断是不是他自己的属性,是就将其赋值给要return的数组;3.遍历它,然后通过hasOwnProperty判断是不是他自己的属性,是就将其赋值给要return的数组;浅拷贝的堆内存地址指的是同一个,即只拷贝第一层,深层的引用值只拷贝地址,2.生成新的变量,新变量是数组还是对象取决于传的参数是数组还是对象;2.生成新的变量,新变量是数组还是对象取决于传的参数是数组还是对象;csdn文章推荐受影响解决办法10个字10行。.........

object not found的博客 1万+

JavaScript 浅谈浅拷贝和深拷贝

深拷贝和浅拷贝在各大语言中都有体现,这篇博客谈谈我对JavaScript中深浅拷贝的理解。 浅拷贝 浅拷贝只是拷贝一层,更深层次对象级别的只拷贝引用地址。 这句话怎么理解呢?来看下面这个例子: let obj = { id: 1, name: '李小龙', message: { age: 18 } } let o = {} 我现在想要对象o拷贝对象obj,浅...

weixin_41309331的博客 296

浅谈JavaScript中的深拷贝与浅拷贝

对于js基本数据类型是不存在深拷贝与浅拷贝的问题。因为基本数据类型只会在栈中开辟地址,每声明一个基本数据类型,就会在栈中开辟一个新的栈地址,每个地址之间互不干预,所以只有引用类型才有深浅拷贝。 对于js中的对象(object)和数组(array)才会出现深拷贝与浅拷贝的问题。说说浅拷贝的原理:有两个变量,变量obj1在栈中开辟了一个obj1的地址,同时变量obj2变量也在栈中开辟了一个o...

bigfatDone的博客 299

浅谈深拷贝和浅拷贝(js)

如何区分深拷贝与浅拷贝?简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明是浅拷贝,如果B没变,那就是深拷贝。深入点来说,就是B复制了A,如果B复制的是A的引用,那就是浅拷贝,如果B复制的是A的本体,那就是深拷贝。在深入了解深拷贝和浅拷贝之前,我们先得了解堆栈和数据类型。 一.堆栈和数据类型 在js中,数据类型分为两种,基本类型和引用类型。基本类型指的是简单...

GuoZebin的博客 2万+

浅谈Js浅拷贝与深拷贝

引言 数据类型分为简单数据类型和复杂数据类型。对于基本数据类型来说,它的值直接存储在栈内存中,而对于引用类型来说,它在栈内存中仅仅存储了一个引用地址,而真正的数据存储在堆内存中。 对于Js简单数据类型有5种,Number,String,Boolean,undefined,null;、 复杂数据类型:Object(注意:数组属于对象) 浅拷贝 对于浅拷贝而言,就是只拷贝对象的引用,而不深层次的拷贝对象的值,多个对象指向堆内存中的同一对象,任何一个修改都会使得所有对象的值修改,因为它们公用一条数据。

weixiao0111的博客 219
上一篇: Vue实例生命周期钩子
下一篇: JS闭包closure
一只抠代码的汪
博客等级 码龄7年 15粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值