JS深浅拷贝复习

概念:浅拷贝是拷贝堆内存的地址,而深拷贝是拷贝堆内存中的值

JS只提供了一个赋值运算符去拷贝它的地址,JS没有提供给我们去拷贝堆内存中值的方法,我们平时用的Object.assign和展开运算符看似可以实现对象的拷贝,而它们对于对象属性的拷贝也是浅拷贝;

一、实现深拷贝的多种方法:

1.JSON字符串转化

JSON.parse(JSON.stringify(object))

2.递归拷贝(用for in 对入参obj的keys进行遍历,并一个一个的copy到newobj上)

for(let i in obj){
    newobj[i]=copy(obj[i]);
}

二、浅拷贝方法

1.for···in只循环第一层

for (let i in obj1) {
   obj2[i] = obj1[i];
}

2.Object.assign方法

var obj1 = Object.assign(obj);

3.直接用=赋值

obj1 = obj2

 

 

在实际应用中,比如在点击事件btnClick(item),想要将这个item赋值给v-modle绑定的数据时,就不能使用浅拷贝,否则两者指向同一地址,item值会被改变(说的很粗略,踩过的坑自己记录一下)

posted @ 2021-10-27 10:57  栗子米  阅读(30)  评论(0编辑  收藏  举报