js在處理複雜資料的時候,可能會涉及到引用型別的物件或者陣列的copy問題,下面是兩種複製物件或陣列的方法:
一、利用jquery自帶的方法,呼叫簡單方便
// 淺層複製(只複製object根級的各個值)var newobject = jquery.extend({}, oldobject);
// 深層複製(會複製整個(包括根節點和子節點)object的值)
var newobject = jquery.extend(true, {}, oldobject);
二、可以通過js迴圈的方式去一層一層複製,如下
// 淺層複製(只複製object根級的各個值)
var old_obj = };function
copyboot(obj);
for ( var attr in
obj)
return
newobj;
}var obj2 =copyboot(obj);
obj2.a.b = 20;
alert(obj.a.b);
// 深層複製(會複製整個(包括根節點和子節點)object的值)
var obj = };function
copyall(obj)
var newobj ={};
for ( var attr in
obj)
return
newobj;
}var obj2 =copyall(obj);
obj2.a.b = 20;
alert(obj.a.b);
JS深度複製deepCopy
在js裡,除array和object之外的資料型別的複製可以直接通過等號 來實現,但array和object型別的資料通過等號只是起引用作用,指向的是同一塊記憶體位址。當源資料改變,引用的資料也同時會發生變化。因此若要複製這兩類資料型別就必須對它們裡邊的每乙個元素都逐個進行複製,可以通過迭代實現。l...
ArcGIS物件深度複製
arcgis engine 開發中對於物件使用,每乙個物件都會分配一塊記憶體,在有些應用中想要做到物件的完全複製,希望重新分配一塊新的記憶體來對該物件進行操作,就要用到 iobjectcopy 介面。能夠通過 iobjectcopy 介面進行複製的必須能夠轉換成 ipersiststream 可以有...
物件的深度複製
深度複製就是將引用成員指向的物件也進行複製。實際的過程是建立新的引用成員指向的物件,然後複製物件包含的資料。深度複製可能會變得非常複雜,因為引用成員指向的物件可能包含另乙個引用型別成員,最簡單的例子就是乙個線性鍊錶。如果乙個物件的成員包含了對於線性鍊錶結構的乙個引用,淺度複製 只複製了對頭結點的引用...