物件的拷貝

2021-09-13 23:53:34 字數 1191 閱讀 7679

例:

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.淺拷貝 表示將所有非引用資料型別從乙個物件複製到另乙個物件 如果原有物件包含對像引用,則複製對角引用 即是指當物件的字段值被拷貝時,欄位的引用物件不會被拷貝 形成拷貝後的物件與原物件...