首页 > 编程知识 正文

深浅copy,vector深拷贝浅拷贝

时间:2023-05-05 13:45:07 阅读:31994 作者:3780

什么是深拷贝,什么是浅拷贝?

假设您要将a复制到b。 也就是说,B=A,b变化的话,a也变化,是浅拷贝。 如果a不变的话,是深刻的副本。 (实际上,深度复制只针对更复杂的对象类型的数据。 此时,只复制object中的引用地址,而不是堆内存中的值。 ) ) ) )。

http://www.Sina.com/http://www.Sina.com /

js轻拷贝与深拷贝的区别及实现方法

1、扩展算子实现深度复制

let obj={a:1,b:2,c : { name : ' world ' } letobj1={ . obj } obj1. a=5; console.log(obj )/) a:1,b: 2,c: ) name : ' world ' } console.log (obj1)/) a:b3360

let obj={a:1,b:2,c : { name : ' world ' } letobj1={ . obj } obj1. c.name=' hello '; console.log(obj )/) a:1,b: 2,c: ) name : ' hello ' } console.log (obj1)/) a:b3360 obj1 obj的c是对象,此时复制的对象是引用数据类型c,实际复制的是对象的引用地址,因此是浅副本

对于实现深拷贝的方式:

在react中,从父组件传递给子组件的数据data在子组件中直接在props中复制到childData,在浅副本中childData=data,此时childData和data

因此,为了避免修改源数据,在子组件中将深度复制(childData=[…props.data] )或在父组件中将深度复制的对象传递到子组件

在react hook中使用到深度复制(let tempBlockData=[…blockData]; 中,重新赋值state值进行操作。 之所以使用深度复制,是为了保留对新数组的操作,以避免更改在useState中定义的state的值。 因此,为了不改变state的blockData,进行深度复制,然后用对应的setState进行更新。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。