引发思考场景:在vue 父子组件传值的时候在多次调用同一个组件的时候 赋值的数组还没有传给源数组的时候 源数组发生改变,这时我在网上找到方法是将数据JSON 序列化一下,然后 再反序列化一下 父组件值则不会出现同步变化
问题产生:浅拷贝 和深拷贝
1:浅拷贝 只是改变指针指向,没有重新赋值
2:深拷贝 重新赋值存放在堆内存中的对象,变量保存的是一个指针,这个指针指向另一个位置。当需要访问引用类型(如对象,数组等)的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。
浅拷贝和深拷贝区别:
先深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级。
浅拷贝 有两层以及两层以上的对象
浅拷贝:
varx = {a:1,b: {f: {g:1} },c: [1,2,3]};
可以使用 Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
如果只有一层的话 则是深拷贝
深拷贝:
使用JSON 序列化 和反序列化即可 (JSON对象的parse和stringify)
网友评论