js 陣列物件的淺轉殖

2022-07-26 00:54:17 字數 496 閱讀 9338

如果再考慮更奇葩更複雜的情況,例如我們定義:

var obj = [, "b": 2 }, ["c", ]];

這是乙個由物件、陣列雜合成的奇葩陣列,雖然我們平時寫程式基本不可能這麼折騰自己,但是可以作為一種特殊情況來考慮,這樣我們就可以結合之前說的方法去拓展拷貝函式:

var objdeepcopy = function (source) ;

for (var item in source)

return sourcecopy;

}var objcopy = objdeepcopy(obj);

objcopy[0].a.a1[1] = "a13";

objcopy[1][1].e = "6";

obj // => [, "b": 2 }, ["c", ]]

objcopy // => [, "b": 2 }, ["c", ]]

這樣它就可以作為乙個通用函式替我們進行深拷貝操作了。

js 轉殖 淺轉殖 深轉殖)

淺轉殖var obj var obj1 function clone origin,target return target clone obj,obj1 obj1.name ge console.log obj1.name ge console.log obj.name chen obj1.car...

js的深轉殖與淺轉殖

json.stringify obj 的弊端 var o var cloneobj o cloneobj.a 2 console.log o.a 2 淺轉殖其實就是將o的位址複製乙份給cloneobj,也就是轉殖後的物件與原物件指向同乙個位址,所以轉殖後的物件與原物件操作的是同一塊堆記憶體的內容 v...

JS淺轉殖和深轉殖

為什麼會有轉殖這麼個玩意呢?上 var a 1,2,3 var b a a 1 4 console.log b 1 4 這就是我們為什麼提到轉殖的原因。我只不過改了a陣列的內容,怎麼b陣列的內容也跟著一起變了嘞?這裡需要知道a和b在棧和堆中的儲存情況 大概說下,陣列的內容是儲存在堆中的,而a和b不過...