JavaScript 中的浅拷贝17 Mar 2025 | 4 分钟阅读 对象的按位复制被称为“浅拷贝”。当有一个原始对象时,会创建一个新对象,并将原始对象中的相同值复制过来。 要了解浅拷贝,应该先了解数据类型的种类。在本节中,我们将简要介绍数据类型,然后理解 JavaScript 中的浅拷贝。我们还将看一个示例,它将告诉我们浅拷贝是如何工作的。 JavaScript 中的数据类型基本上,数据类型有两种,如下所示:
我们将理解它们在浅拷贝中的作用。 什么是浅拷贝对象的浅拷贝是指原始对象的引用位置/地址。如果对象中的某个字段引用了其他对象,它只复制该对象的引用地址(即内存地址),而不会创建新对象。这就是浅拷贝与深拷贝的区别。浅拷贝仅复制对象的顶层属性,但嵌套对象在原始对象和复制对象之间共享。浅拷贝只复制集合结构而不复制值。这意味着两个集合共享原始集合的元素。 通常,浅拷贝易于使用且简单,因为它不创建任何对象,只复制引用地址。这不仅适用于数组,也适用于数组。 因此,在原始数据类型的情况下,当我们创建一个原始数据类型变量的副本时,该值会被复制到一个新的内存地址,新的变量指向该地址。因此,每当我们进行复制时,它都会创建一个新的内存位置,并且是变量的真实副本。因此,如果我们执行 c = a,则会创建一个 'a' 的副本。因此,如果我们尝试为 c 分配一个新值,c 的值会改变,但不会影响变量 a 中存储的值。这是因为一旦初始化,值就会被存储一次。 在引用数据类型的情况下,它存储对象的内存地址(即对象存储的位置)。因此,值复制在引用数据类型中工作良好。因此,浅拷贝和深拷贝都是引用数据类型的类型。 现在,我们将尝试通过示例来理解浅拷贝。 浅拷贝示例考虑两个对象 obj1 和 obj2,其中 obj2 引用 obj1。因此,obj2 将复制与 obj1 相同的内存地址,这意味着两个对象都将具有相同的内存地址,并且只指向同一个地址。 您可以在下面的图表中看到,它很好地表示了示例 ![]() 示例代码实现下面我们提供了一个代码示例,其中我们为学生详细信息创建了一个浅拷贝 输出 上述代码的输出如下所示 ![]() 代码解释
因此,通过这种方式,可以创建一个对象的浅拷贝,并用于为对象属性分配不同的值。 |
倒计时器是一种显示在登录页面上的网页或虚拟时钟。它从特定日期开始倒计时,以表示事件的开始或结束。倒计时器可用于电子商务网站,以显示开始...
阅读 8 分钟
在 JavaScript 中,事件的传播称为“事件流”。事件流是特定网页接收事件的顺序。因此,在 JS 中,事件流过程取决于三个方面:事件捕获 事件...
阅读 6 分钟
概念 设计模式可以被视为软件工程中最常见问题的有据可查的解决方案。开发者要解决别人已经解决过的问题,会变得相当困难。每个开发者都渴望编写工业级的代码,这些代码...
阅读9分钟
JavaScript 不提供任何特定的内置函数来遍历数组元素/对象。您可以通过 for 循环或直接通过元素索引来遍历数组。数组包含多个相同类型的元素,可以使用 for 循环来遍历。在本章中,...
7 分钟阅读
人眼解析大型数字字面量需要很长时间,尤其是有许多重复数字时。新的 JavaScript 编程功能允许在数字字面量中使用下划线作为分隔符,这使得它们更容易理解。JavaScript 中的一项称为数字分隔符的功能使我们能够...
阅读 3 分钟
? 是的,它是一种区分大小写的语言,这意味着标识符、关键字、变量和函数名称必须使用一致的大小写字母书写。与其他许多编程语言一样,JavaScript 也有编写 JavaScript 程序或代码的规则。使用正确的 capitalization...
阅读 2 分钟
简介:文档对象模型 (DOM) 是 HTML 和 XML 中的一个重要概念。HTML 经常出于多种原因使用 DOM 操作。可以使用 DOM 操作添加或删除 HTML 元素。JavaScript 允许我们添加或删除属性、类和 ID...
阅读 6 分钟
对象中存储了一组属性。在对象中,名称(也称为键)和值组合在一起,称为键值对。但是,当它引用时,它不需要外部依赖...
阅读 2 分钟
? 复选框是一种选择框,允许用户通过选中和取消选中来做出二元选择(真或假)。基本上,复选框是一个图标,经常用于 GUI 表单和应用程序中以获取一个或多个输入...
5 分钟阅读
鼠标在网页上向上或向下滚动,并开始使用“onwheel”javascript 操作鼠标滚轮功能。我们可以使用“onmousewheel”事件,但它在 javascript 中已弃用。我们可以使用 javascript 的“onwheel”属性而不是“onmousewheel”事件。语法...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India