兩個物件的直接賦值是淺複製,只是將被賦值物件(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 基礎型別物件儲存的是物件的實際資料,引用型別物件...