在 push 后,修改属性时发现新增的和原来的都被修改了

99 阅读1分钟

这个问题其实并不难,但当时就是没反应过来
简单介绍,避免有人跟我一样

在对数组进行push的时候
例如

//arr 是一个数组,里面有多个对象
// obj 代表一个数组里某个对象

arr.push(obj)
// 当对里面的数据进行修改时 
// 例如 
arr.[arr.length-1].avtive = true  // 新增加的和原来那个 active 的值都会变

这是因为对象是引用类型,传递的是引用地址,所以他们指的是同一个地址

解决方法

利用 JSON 或者 {...obj} 再或者 Object.assign 来解决

arr.push(Object.assign({},obj))
arr.push(JSON.parse(JSON.stringify(obj)))
arr.push({...obj})
```
```