Object.assign方法将更改原始对象属性-JS

时间:2018-08-01 07:07:16

标签: javascript reactjs

我是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()之后,更改对象A也将更改对象B。为什么会发生这种情况,如何避免这种情况?

1 个答案:

答案 0 :(得分:2)

您需要分析和分类对象,然后使用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);