- 今天做一个功能的时候发现一个问题
item.fileName = '测试1'
arr.push(item)
item.fileName = '测试2'
arr.push(item)
- 原本以为得到的数组中会有测试1和测试2两个对象,但是实际不是,只有两个测试2对象,为什么,因为他们都是指向的一个内存空间,所以一个值的变化,会导致另一个同步变化
如何解决这种问题?
- 那就要不要再原对象中修改,要新建一个对象,方法有两种
- Object.assign({}, oldObj)
let newItem = Object.asign({}, item)
- 使用JSON.stringify() JSON.parse() 这个不建议,如果对象的value中有方法的话,转化过程中会出问题
let newItem = JSON.stringify(item)
newItem = JSON.parse(newItem)