js中的淺拷貝和深拷貝

2022-07-31 06:06:14 字數 1008 閱讀 7564

1.概念

淺拷貝:是將乙個物件的屬性值複製到另乙個物件,如果有的屬性的值為引用型別的話,那麼會將這個引用的位址複製給物件,因此,兩個物件會有同乙個引用型別的引用,淺拷貝可以使用object.assign和展開運算子(將乙個陣列轉為用逗號分隔的引數序列--(...))來實現。

深拷貝:是將乙個物件的屬性值複製到另乙個物件,如果遇到屬性值為引用型別的時候,它新建乙個引用型別並將對應的值複製給它,因此,物件獲得乙個新的引用型別而不是嘴個元祐型別的引用。深拷貝對於一些物件可以使用json的兩個函式(stringify(),parse())來實現,但是由於json的物件格式化比js的物件格式化更加嚴格,所以如果屬性值裡邊出現函式或者symbol型別的值時,會轉化失敗。

2.實現方式

淺拷貝:

1.object.assign

const a = ;

const b = ;

const c = ;

const obj = object.assign({}, a, b, c);

obj //

2.for in 迴圈遍歷

function easycopy(object) ;

// 遍歷 object,並且判斷是 object 的屬性才拷貝

for (let key in object)

}return newobject;

}

深拷貝:

1.json

function deepclone(obj) ;

let obj1 = ,

zhang:

};let test = deepclone(obj1);

console.log(test);

2.for in 迴圈遍歷

function deepcopy(object) ;

for (let key in object)

}return newobject;

}

Js中的深拷貝和淺拷貝

var a 10 var b a 更換值,a,b互不影響 引用型別拷貝 var a 10 var b a b 20 這裡是給b乙個新的位址 console.log a 列印結果為10 var a 10 var b a b.push 20 這裡在b原有的位址上加了20 console.log a 列印...

js 中的深拷貝和淺拷貝

對於字串型別,淺複製是對值的複製,對於物件來說,淺複製是對物件位址的複製,並沒 有開闢新的棧,也就是複製的結果是兩個物件指向同乙個位址,修改其中乙個物件的屬性,則另乙個物件的屬性也會改變,舉個栗子 var arr 1,2,3 var arrcopy arr arrcopy 0 100 修改新陣列的第...

JS深拷貝和淺拷貝

js中物件分為基本型別和復合 引用 型別,基本型別存放在棧記憶體,復合 引用 型別存放在堆記憶體中 堆記憶體中用於存放由new建立的物件,棧記憶體存放一些基本型別的變數和物件的引用變數 對於簡單變數,記憶體小,直接複製不會發生引用 var a 123 var b a a 123456 console...