首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Javascript中分配对象:浅拷贝还是深拷贝?

在Javascript中分配对象:浅拷贝还是深拷贝?
EN

Stack Overflow用户
提问于 2015-12-23 17:45:30
回答 1查看 548关注 0票数 4

我想知道javascript在复制对象时是做浅拷贝还是深拷贝。

代码语言:javascript
运行
复制
const a = ['value1', 'value2'];
const b = ['value3', 'value4'];
const new_ab = [a, b];

new_ab将有新的分配值或引用?如果它是一个深拷贝,我如何才能使它成为燕子?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-23 21:10:43

正如注释中所暗示的那样,JavaScript完全对引用进行操作,唯一的例外是原始值保留在堆栈中,因此程序不需要引用来访问它们。在您的示例中,所有变量声明都创建新值--每个都是Array的实例--但是声明数组返回的是引用,而不是数组本身。例如,[1, 2]是一个值数组(整数),但[a, b]是一个引用数组。

所以..。什么都不复制,。我们可以通过将对象放置为数组的元素并检查以前分配的属性是否仍然可以通过新的“父”数组访问来演示这一点。

(要在注释中回答您的问题,是的,如果您(或JavaScript)要复制值,您的示例的性能要更好。)

代码语言:javascript
运行
复制
'use strict';

const arrayOne = [];

arrayOne.someProperty = "This string is a property of `arrayOne`, " +
                        "accessed via the reference to it in `arrayTwo`."

const arrayTwo = [arrayOne];

span.innerHTML = arrayTwo[0].someProperty;
代码语言:javascript
运行
复制
<span id="span"></span>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34441076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档