jQuery.extend()和Object.assign失败

时间:2018-08-01 03:00:40

标签: javascript jquery json object

我正在尝试深复制大量的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 之后。当我将 field 更改为“ id”时,变量 elobj field 应该具有原始值“ column2”。但是两者都更改为“ id”。

0 个答案:

没有答案