我正在用ES6中的Jest为React Components写一些测试。在一个测试中,我需要克隆一个json导入并改变克隆对象,但是当我变异克隆的对象时,原始对象也会发生变异!
<table>
<tr>
<td></td>
<td>Text</td>
<td>Text</td>
</tr>
<tr>
<td rowspan="3">Text</td>
<td>Text</td>
<td>Text</td>
</tr>
<tr>
<td>Text</td>
<td>Text</td>
</tr>
<tr>
<td>Text</td>
<td>Text</td>
</tr>
<tr>
<td>Text</td>
<td>Text</td>
<td>Text</td>
</tr>
</table>
为什么会这样?为什么当我改变克隆对象时,原始导入的对象也会发生变异?
答案 0 :(得分:1)
Object.assign
只做一个浅层克隆。这意味着内部对象仍然指向原始对象。
要进行深度克隆,您可以使用Lodash或immutability-helper。
答案 1 :(得分:0)
您可以使用此功能复制对象属性:
const copyObj = (obj) => Object.keys(obj).map(k => [k, obj[k]]).reduce((m, [k, v]) => {m[k] = v; return m}, {})