例:
var obj = ;答: (
1)賦值得到的物件(物件的引用相同,錯誤答案)
var obj1 = obj; (
2)通過淺拷貝得到的物件(物件的引用不同)
var obj2 = shallowcopy(obj);
function shallowcopy(src) ;
for (var prop in src)
}
return dst;}
es6寫法:
var obj21 = shallowcopy1(obj);
function shallowcopy1(src) ;
for (let [k, v] of object.entries(src))
return dst; }
(3)object.create()
const clone = object.create(object.getprototypeof(obj),
object.getownpropertydescriptors(obj)); //
【es2017
亮點】(4)
object.assign(target, source1, source2); es6
const obj4 = object.assign({}, obj); //
function clone(origin) , origin); }
(5)擴充套件運算子【
es2017
亮點】
var obj3 = ; (
6)object.defineproperties(target2, object.getownpropertydescriptors(source));
【es2017
亮點】
主要是為了解決
object.assign()
無法正確拷貝
get屬性和
set屬性的問題。
const source = };
const target2 = {};
object.defineproperties(target2, object.getownpropertydescriptors(source));
(1)json.parse(json.stringify(obj))
物件陣列的深拷貝和物件的深拷貝
1 對於 普通陣列 陣列元素為數字或者字串 深拷貝很簡單,拷貝之後兩個陣列指標指向的儲存位址不同,從而完成深拷貝 var test 1,2,3 原陣列 var testcopy concat test 拷貝陣列 testcopy 0 4 console.log test 1,2,3 console....
物件的淺拷貝,包括拷貝物件原型的屬性
const s symbol s 測試物件 const test arr 0,1,2 date new date 1996 03 03 reg new regexp 我是乙個正則 ig err new error 我是乙個錯誤 s 我的key是symbol noenumerable 我是手動設定的不...
C 物件的拷貝
在程式設計中,我們有時希望得到現有乙個物件的拷貝。拷貝有兩種 1 淺拷貝 也稱淺表複製 2 深拷貝 也稱深度複製 1.淺拷貝 表示將所有非引用資料型別從乙個物件複製到另乙個物件 如果原有物件包含對像引用,則複製對角引用 即是指當物件的字段值被拷貝時,欄位的引用物件不會被拷貝 形成拷貝後的物件與原物件...