1. 程式人生 > 其它 >JS深淺拷貝複習

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值會被改變(說的很粗略,踩過的坑自己記錄一下)