gpt4 book ai didi

javascript - 将对象分配给变量的意外行为

转载 作者:行者123 更新时间:2023-12-02 13:47:21 25 4
gpt4 key购买 nike

我的 ExpressJS 应用程序中出现一个非常奇怪的问题。

我的代码:

console.log(req.user); // { user_id: '12345', name: 'Mr Example' }
var set = {};
set = req.user;
set['test'] = "testing";

console.log(req.user); // { user_id: '12345', name: 'Mr Example', test: 'testing' }
console.log(set); // { user_id: '12345', name: 'Mr Example', test: 'testing' }

为什么 console.log(req.user) 也输出 test 属性和值?它似乎正在复制我对 set 变量所做的任何操作。这是为什么?

最佳答案

这是完全正常的......如果你set = <obj>它只添加对该对象的引用,而不创建新的对象。

只需更改:

set = req.user;

至:

set = Object.create(req.user);

请注意,它不会重写旧值,您必须自己动手......

for (var k in req.user) { set[k] = req.user[k]; }

JSFiddle

或更短的版本:

var set = Object.assign({}, req.user);

这将复制所有值。

JSfiddle

关于javascript - 将对象分配给变量的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41281923/

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