javascript - Object.assign 方法将更改源对象属性 - JS
问题描述
我是 ReactJS 的新手,我发现了一件奇怪的事情Object.assign()
:
const B = {
k1: 'b',
k2: 'bb',
treedata: [{
children: ['g']
}]
}
var A = Object.assign({}, B);
A.treedata[0].children = [1];
console.log(B)
如您所见,在 之后Object.assign()
,更改 objectA
也会更改 object B
。为什么会发生这种情况,如何避免这种情况?
解决方案
您需要解析和区分对象,然后object.assign
像这样使用,这样var A = Object.assign({}, JSON.parse(JSON.stringify(B)));
原始对象就不会改变
查看片段
const B = {
k1 : 'b',
k2 : 'bb',
treedata : [{ title: 'title', key: -1, fieldName: '', from: -1, to: -1, children: ['g'] }]
}
var A = Object.assign({}, JSON.parse(JSON.stringify(B)));
A.treedata[0].children = [1];
alert(B.treedata[0].children);
推荐阅读
- c# - 世界空间拖放中的 UI 与鼠标不对齐
- javascript - 如何将历史记录从我们打开的选项卡复制到新打开的选项卡?[Javascript,反应]
- javascript - 在本机反应中设置状态会冻结应用程序
- javascript - 如何从 JSON 数据中获取站点名称数据
- python - 除非输入搜索查询,否则隐藏 Django admin 中的所有记录
- python - 传递值的形状与使用 init 函数的索引不同
- python - 如何检查 asyncio.wait 后完成了什么协程
- reactjs - 如何在 AntD 中为树组件的展开和折叠提供自定义图标以进行反应?
- serialization - 如何配置特定的序列化方法以仅用于 Celery ping?
- javascript - 基于多个下拉选择从mysql数据库中获取数据