物件的淺拷貝和深拷貝

2021-09-13 23:39:39 字數 807 閱讀 2686

淺拷貝:

1.用for迴圈獲取引用物件的屬性和值,賦值給新物件:

object.prototype.num=1;

person1=;

function clone(origin,target);

for(var key in origin);

};return tar;

}; var person2=clone(person1);

console.log(person1,person2);

深拷貝:

1.還是利用for迴圈和遞迴,判斷key值是原始值,還是引用值;

function deepclone(origin,target),

tostr=object.prototype.tostring,

arrtype='[object array]';

for(var key in origin)else;

};/*遞迴*/

deepclone(origin[key],target[key]);

}else}};

return target;

};var obj=

},arr1:[1,2,3]

}; var obj2=deepclone(obj);

2.利用json實現深拷貝,問題是用json拷貝方法的時候,json這種方式就不行

var str=json.stringify(obj);

var obj3=json.parse(str);

物件的淺拷貝和深拷貝

淺拷貝 python拷貝一般都是淺拷貝。拷貝時,物件包含的子物件內容不拷貝。因此,源物件和拷貝物件引用同乙個物件 深拷貝 使用copy模組的deepcopy函式,遞迴拷貝物件中包含的子物件。源物件和拷貝物件所有的子物件也不同 變數的數值操作 只是形成兩個變數,實際上時指向同乙個物件 測試淺拷貝和深拷...

物件的深拷貝和淺拷貝

引用資料型別的名稱是存在棧記憶體中,值存在堆記憶體中,在棧內會存在乙個引用的位址指向堆記憶體中的值 淺拷貝 深拷貝 實現淺拷貝的方法 1 assign let copyobj object.assign obj 只有第一層不聯動,深層的還是聯動的 2 concat var copyarr arr.c...

物件的淺拷貝和深拷貝

拷貝就是複製,淺拷貝和深拷貝也就是淺複製和深複製。網上關於淺拷貝和深拷貝的內容有很多,原理就不再多贅述了。一言以蔽之,所謂淺拷貝就是一層複製,所謂深拷貝就不僅僅是一層複製,還可以多層複製。淺拷貝去複製基本型別值是沒什麼問題的,但是遇到了陣列 物件這些引用型別值就沒轍了。為什麼沒轍了呢?因為對於這些引...