js 深拷貝,淺拷貝

2022-07-27 07:36:14 字數 1108 閱讀 4879

淺拷貝

拷貝的是物件的索引位址,乙個物件的資料發生變化時,另乙個物件的資料也會發生改變

淺拷貝的方法:

1.物件時多層的情況下

a:object.assign({},obj)//返回合併後的物件

b: $.extend({},obj)//返回合併後的物件

c: function copy(obj);

for(var key in obj)

return newobj;

}-------------------------------

d:

let a =

let b = a//不常用

a.age = 2

console.log(b.age) // 2

深拷貝

拷貝的是物件的值,乙個物件的資料發生變化時,另乙個物件的資料不會發生改變

深拷貝的方法:

1.物件時單層的情況下:

object.assign({},obj)

擴充套件運算子...//注意:當物件是單層時,是深拷貝,當物件是多層時,第一層是深拷貝,第二層就是淺拷貝

var newobj =

2.物件是單層或者多層的情況下

$.extend(true,{},obj)

json.parse(json.stringify(obj))//將物件先轉為字串,在轉為物件

注意:

let a =

let b

=a.age = 2

console.log(b.age) //1

---------------------------------------------let a =,

name:

'yck'}

let b =json.parse(json.stringify(a))

console.log(b)

//

js淺拷貝深拷貝

js淺拷貝深拷貝 對於想要複製的物件,如果物件裡面對應的值都是基本資料型別的,可以直接複製 也就是通過淺拷貝複製。如果對應的值有物件那麼淺拷貝是行不通的。會造成資料汙染。下面介紹淺拷貝與深拷貝實現方法。1.淺拷貝 let tem let copy for let key in tem 2.通過obj...

淺拷貝,深拷貝 js

堆和棧 基本型別 存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配。6種基本資料型別 undefined null boolean number和string,es6新增屬性symbol.他們是直接按值存放的,所以可以直接訪問。引用型別 存放在堆記憶體中的物件,變數實際儲存的是乙個指標,...

JS淺拷貝 深拷貝

1,前景提要 1 數字在被複製後,再修改時,不會改變原值 var a 5 var b a b 7 console.log a a不變 2 物件在被複製後,再修改時,會改變原值 var a var b a b.name hi console.log a a.name hi 2,淺拷貝 拷貝一層物件。深...