關於js物件的複製

2021-09-25 00:21:13 字數 878 閱讀 3922

兩個物件的直接賦值是淺複製,只是將被賦值物件(listb)指向了賦值物件(lista)的位址 ,所以兩者的值都是一樣的

let lista = 

let listb = lista

如果像以下**,lista物件的屬性指向了lista物件所儲存的位址,那麼就會出線無限的「巢狀「,由於兩個物件指向的位址依舊沒有變化,所以兩者還是一致的

!!!坑來了如以下**,lista和listb還能一致嗎

let lista = }

let listb = lista

let i = 0

while(i++ < 3) }

lista = lista.next

}

迴圈前,兩者依舊指向乙個位址

迴圈開始,lista的屬性指向了另乙個儲存位址,此時listb也同樣有該操作

但是lista = lista.next,直接將lista指向了它屬性所指向儲存位址,改變了原有的指向,但是listb沒有變

所以第一步的結果是:

lista: }

listb:}}

後面兩次的迴圈也是如此,即lista的指向改變,覆蓋了原先的值

js物件複製

淺複製 var obj var obj1 var obj2 object.assign obj var obj var obj1 var obj2 object.assign obj obj.c.push 2 var obj var copyobj json parse json stringify...

js深度複製物件

js在處理複雜資料的時候,可能會涉及到引用型別的物件或者陣列的copy問題,下面是兩種複製物件或陣列的方法 一 利用jquery自帶的方法,呼叫簡單方便 淺層複製 只複製object根級的各個值 var newobject jquery.extend oldobject 深層複製 會複製整個 包括根...

JS物件的引用複製和資料複製

js物件分為兩類,一類為基礎型別物件,包括字串 string 數值 number 布林值 boolean null 空 undefined 未定義 另一類為合成物件,又叫做引用型別物件,包括陣列 array 物件 object 函式 function 基礎型別物件儲存的是物件的實際資料,引用型別物件...