H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【Web前端问题】问个javascript数组中对象内存地址引用的问题

把a赋值给b

let a = [{
  m: 1
}]

let b = [...a]

b[0].m = 2

console.log(a)
console.log(b)

结果:

[ { m: 2 } ] // a
[ { m: 2 } ] // b

改动b里某个元素的属性时,a对应元素里的m属性也跟着变了

那么,怎么能让数组b里的对象重新指向新的内存地址呢?
期望结果:

[ { m: 1 } ] // a
[ { m: 2 } ] // b

回答:

拷贝对象,而不是引用对象,assign与...一样都是浅拷贝

let b = a.map(item=>{
    return Object.assign({},item)
})

回答:

let a = [{
  m: 1
}]
let b = JSON.parse(JSON.stringify(a))
b[0].m = 2
console.log(JSON.stringify(a))
console.log(JSON.stringify(b))

本文地址:H5W3 » 【Web前端问题】问个javascript数组中对象内存地址引用的问题

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址