gpt4 book ai didi

javascript - 将变量的值分配给另一个变量使其成为镜像

转载 作者:行者123 更新时间:2023-12-03 03:40:53 25 4
gpt4 key购买 nike

我在我的节点应用程序中遇到了一些奇怪的问题。如果我获取一个变量的内容并分配给另一个变量,它会以某种方式在它们之间建立链接,如果我更改第二个变量中的内容,它也会影响我从中获取内容的第一个变量。

这是我的服务器结构:

var body = {};

现在让我们填充正文:

body[_session] = {
content: { /* some data here */ },
sockets: []
};

然后在某个时候我会这样做:

body[new_session] = {
content: body[_session].content,
sockets: []
};

届时,对 new_session 内容所做的更改也会对原始 _session 内容进行。

我通过这样做解决了这个问题:

body[new_session] = {
content: JSON.parse(JSON.stringify(body[_session].content)),
sockets: []
};

但这似乎是成本高昂的操作,而且是可以避免的事情,我只是还不知道如何,也许有人有一个想法,为什么会发生这种情况以及如何不费力地解决它。

最佳答案

这只是创建一个引用,您需要将 body[_session].content 的属性正确复制到一个新对象。

如果您使用的是 ES6,请尝试 Object.assign :

content: Object.assign({}, body[_session].content)

正如您在这里看到的:https://jsperf.com/object-assign-vs-iife - 比 stringify/parse 方法快 3.5 倍,同时更具可读性。我包含了 Mevia 的解决方案,以表明它速度更快,但更冗长,并且难以添加到现有的、结构良好的代码库中。

否则请从这里给出解决方案:How do I correctly clone a JavaScript object?

关于javascript - 将变量的值分配给另一个变量使其成为镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45632507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com