深浅拷贝

// 注意: 基本数据类型不存在深浅拷贝,只是值传递,复合数据类型才有深浅拷贝之说

        var obj1 = { name: "吴亦凡" };
        var obj2 = obj1;
        obj1.name = "罗志祥";

        // 相当于把obj1的指针复制了一份给了obj2,两个指针指向了堆内存中的一块内存地址,改变其中一个会影响另外一个(浅拷贝)
        // 复合数据类型直接赋值就是浅拷贝操作
        console.log(obj2.name);//罗志祥

        // 复制一个复合数据类型,改变其中一个,另一个不受影响,两个对象是独立的,这样的拷贝就是深拷贝
        var obj3 = { name: "李云迪" };
        var obj4 = {};
        for (const k in obj3) {
            // k===> "name"
            // obj4.name=obj3.name
            // obj4.name="李云迪"
            obj4[k] = obj3[k]
        }

        obj3.name="李易峰";
        console.log(obj4.name);//李云迪
        // 总结: 深拷贝和浅拷贝的区别?
            //  浅拷贝只是增加了一个指针,指向了已经存在的内存地址,如果原来的对象发生了变化,那么浅拷贝出来的对象也会改变
            // 深拷贝是申请了一块新的内存,增加了一个指针,两个指针指向不同的内存地址,两个对象互不影响

//  另一种说法
    // 浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制这个对象本身,新旧对象共享一块内存。
    // 深拷贝(deep copy):复制并创建一个一模一样的对象,不共享内存,修改新对象旧对象不会变。

原文链接:https://www.cnblogs.com/huwenlong/p/17248404.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深浅拷贝 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • JavaScript Sort 表格排序

    JavaScript Sort 表格排序攻略 JavaScript Sort 表格排序是一种常见的数据排序技术,它使用JavaScript代码对HTML表格中的数据进行排序。该技术非常实用,能够帮助用户更方便快捷地查看表格中的数据。 实现步骤 下面是实现JavaScript Sort 表格排序的步骤: 在表格中为每列添加一个点击事件。当用户点击表头中的某一列…

    JavaScript 2023年6月11日
    00
  • vue 获取url里参数的两种方法小结

    下面我将为您详细讲解“vue 获取url里参数的两种方法小结”的完整攻略。 一、 获取参数的两种方法 方法一:使用正则表达式 这种方法需要使用正则表达式来获取url里的参数,步骤如下: 获取当前页面的url let url = window.location.href; 编写正则表达式,获取url里的参数 假设我们要获取名为“id”的参数,正则表达式如下: …

    JavaScript 2023年6月11日
    00
  • javascript日期操作详解(脚本之家整理)

    我来给您提供详细讲解“JavaScript日期操作详解(脚本之家整理)”的完整攻略。 JavaScript日期对象 JavaScript内置了Date对象来处理日期和时间。可以使用Date对象创建一个日期对象,日期对象表示一个特定的时刻。 创建日期对象 可以使用构造函数创建一个日期对象: var date1 = new Date(); 可以使用一个整数值表示…

    JavaScript 2023年5月27日
    00
  • 15个非常实用的JavaScript代码片段

    当涉及到在网站上添加或改善交互时,JavaScript 是一个非常有价值的语言。但是,编写大量代码段时,有时候容易感到身体力行的疲惫。 在这里我分享了 15 个实用的 JavaScript 代码段,这些代码段可以帮助你加快开发速度,并优化你的代码。下面我将逐一讲解这些片段的攻略。 1. 将数字转换成货币格式 在金融领域的网站中,通常需要将某个数字转换成货币格…

    JavaScript 2023年5月28日
    00
  • 跟我学习javascript的严格模式

    接下来我将为大家详细介绍“跟我学习JavaScript的严格模式”的完整攻略。 什么是严格模式 严格模式是JavaScript的一种运行模式,通过严格模式可以对代码的执行进行限制,使代码更加严谨,减少出错的可能性。在ES5中, JavaScript引入了严格模式概念,它是一组限制 JavaScript语言的特性。在严格模式中,一些在正常模式中默许的行为,会被…

    JavaScript 2023年6月10日
    00
  • 教你用typescript类型来推算斐波那契

    下面是教你用 TypeScript 类型来推算斐波那契的完整攻略。 一、斐波那契数列的定义 斐波那契数列是指这样一个数列:0、1、1、2、3、5、8、13、21、34、……我们定义 f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>=2,n∈N*)。 二、使用 TypeScript 声明斐波那契数列类型 我们可以使用 TypeScr…

    JavaScript 2023年5月28日
    00
  • IE与FireFox的JavaScript兼容问题解决办法

    IE与FireFox的JavaScript兼容问题解决办法攻略 1. 兼容性问题简介 在开发Web前端应用程序时,我们常常需要使用JavaScript脚本语言完成交互功能、表单校验、动态效果等。然而,由于浏览器的种类繁多,不同浏览器对JavaScript的支持情况也存在差异,这可能会导致不同浏览器之间的兼容性问题。 特别是在IE浏览器和FireFox浏览器中…

    JavaScript 2023年6月10日
    00
  • vue动态菜单、动态路由加载以及刷新踩坑实战

    Vue动态菜单、动态路由加载以及刷新踩坑实战 在Vue项目中,动态菜单与动态路由的实现可以大大提升项目的扩展性和可维护性。本文将详细讲解如何实现Vue项目中的动态菜单、动态路由加载以及刷新踩坑实战。 一、动态菜单的实现 数据结构设计 首先,我们需要设计动态菜单的数据结构。我们可以将菜单数据放在以数组为基础的对象数据中,其中包含每个菜单的title、icon、…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部