javascript - jQuery.extend() 和 Object.assign 失败
问题描述
我正在尝试深度复制一个巨大的 Json 内容。但是,不幸的是,它仍然引用该对象。
elobj内容:
{
"children": [
{
"children": [
{
"children": [],
"cfg": {
"blockName": "",
"binding": {
"cbind": {},
"cBindAttrTexts": {},
"cBindAttr": {}
},
"layout": {},
"include": {}
},
"frontCfg": {
"pseudoClasses": {
"selectedClass": "None",
"InlineOrSelector": "Inline",
"selectedSelector": "New"
}
},
"natifChildren": {},
"cssConfig": {},
"htmlConfig": {
"class": {},
"attr": {}
},
"CBindTexts": [],
"CBindAttrTexts": {},
"CBindAttr": {},
"cssValues": {},
"customAttrs": {},
"type": "text",
"content": "A paragraph"
}
],
"cfg": {
"blockName": "",
"binding": {
"cbind": {},
"cBindAttrTexts": {},
"cBindAttr": {},
"cBind": {
"entity": "Entity2",
"field": "column2"
}
},
"layout": {},
"include": {},
"js": {}
},
"frontCfg": {
"pseudoClasses": {
"selectedClass": "None",
"InlineOrSelector": "Inline",
"selectedSelector": "New"
}
},
"natifChildren": {},
"cssConfig": {
"width": [
"auto",
[
"1266",
"px"
]
],
"height": [
"auto",
[
"20",
"px"
]
],
"backgroundSize": [
"auto auto",
[
0,
"px"
],
[
0,
"px"
]
],
"backgroundPosition": [
"custom",
[
"0",
"%"
],
[
"0",
"%"
]
]
},
"htmlConfig": {
"class": {},
"attr": {}
},
"CBindTexts": [],
"CBindAttrTexts": {},
"CBindAttr": {},
"cssValues": {},
"customAttrs": {},
"tag": "p",
"type": "p"
}
],
"cfg": {
"blockName": "",
"binding": {
"cbind": {},
"cBindAttrTexts": {},
"cBindAttr": {},
"cBind": {}
},
"layout": {},
"include": {},
"js": {}
},
"frontCfg": {
"pseudoClasses": {
"selectedClass": "None",
"InlineOrSelector": "Inline",
"selectedSelector": "New"
}
},
"natifChildren": {},
"cssConfig": {
"width": [
"auto",
[
"1266",
"px"
]
],
"height": [
"auto",
[
"30",
"px"
]
],
"backgroundSize": [
"auto auto",
[
0,
"px"
],
[
0,
"px"
]
],
"backgroundPosition": [
"custom",
[
"0",
"%"
],
[
"0",
"%"
]
]
},
"htmlConfig": {
"class": {},
"attr": {}
},
"CBindTexts": [],
"CBindAttrTexts": {},
"CBindAttr": {},
"cssValues": {},
"customAttrs": {},
"tag": "div",
"type": "div"
}
克隆代码:
var elobj = elem.myApp().getElementObject();
var elemObject = $.extend(true, {}, elobj);
elemObject.children[0].cfg.binding.cBind.field = "id";
console.log(elobj)
在我将 elobj 克隆到elemObject之后。当我将字段更改为“id”时,变量elobj中的字段应该具有原始值,即“column2”。但两者都改为“id”。
解决方案
推荐阅读
- arduino - ESP32 MQTT 客户端卡在 client.subscribe()
- ios - SwiftUI 选择器不滚动到选择
- python - Pytorch 几何包中 train_test_split_edges 中的正边和负边
- python - 在终端 Python 中缓慢打印
- python - 如何加快涉及前一行和多行 pandas 的计算?
- logging - 当持续时间是麋鹿日志中的 MDC 字段时,如何绘制查询的持续时间
- python - 为 numpy 数组重载“==”运算符
- java - 没有 AsyncTask 的 ProgressBar
- javascript - React Javascript - Visual Studio Code 不会自动完成对象属性
- sparql - 选择依赖树上的连接顶点并按深度排序(SPARQL)