object,assign方法

1.復(fù)制一個(gè)對(duì)象

constobj={a:1};

constcopy=Object.assign({},obj);

console.log(copy);// { a: 1 }

2.合并對(duì)象

consto1={a:1};

consto2={b:2};

consto3={c:3};

constobj=Object.assign(o1,o2,o3);

console.log(obj);// { a: 1, b: 2, c: 3 }

console.log(o1);// { a: 1, b: 2, c: 3 }, 注意目標(biāo)對(duì)象自身也會(huì)改變。

3.合并具有相同屬性的對(duì)象

consto1={a:1,b:1,c:1};

consto2={b:2,c:2};

consto3={c:3};

constobj=Object.assign({},o1,o2,o3);

console.log(obj);// { a: 1, b: 2, c: 3 }

屬性被后續(xù)參數(shù)中具有相同屬性的其他對(duì)象覆蓋。

4.深拷貝問(wèn)題

針對(duì)深拷貝,需要使用其他辦法,因?yàn)?Object.assign()拷貝的是屬性值。假如源對(duì)象的屬性值是一個(gè)對(duì)象的引用,那么它也只指向那個(gè)引用。

letobj1={a:0,b:{c:0}};

letobj2=Object.assign({},obj1);

console.log(JSON.stringify(obj2));// { a: 0, b: { c: 0}}?

obj1.a=1;

console.log(JSON.stringify(obj1));// { a: 1, b: { c: 0}}?

console.log(JSON.stringify(obj2));// { a: 0, b: { c: 0}}

?obj2.a=2;

console.log(JSON.stringify(obj1));// { a: 1, b: { c: 0}}

?console.log(JSON.stringify(obj2));// { a: 2, b: { c: 0}}

obj2.b.c=3;

console.log(JSON.stringify(obj1));// { a: 1, b: { c: 3}}?

console.log(JSON.stringify(obj2));// { a: 2, b: { c: 3}}

?// Deep Clone

obj1 = {a : 0, b : { c : 0 } };

letobj3 = JSON.parse(JSON.stringify(obj1));

obj1.a = 4;

obj1.b.c = 4;

console.log(JSON.stringify(obj3));// { a: 0, b: { c: 0}}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Object.assign()方法用于將所有可枚舉的屬性的值從一個(gè)或多個(gè)源對(duì)象復(fù)制到目標(biāo)對(duì)象。它將返回目標(biāo)對(duì)象。 ...
    執(zhí)著_7a69閱讀 1,867評(píng)論 0 2
  • 在 JS 中有一些基本類(lèi)型像是Number、String、Boolean,而對(duì)象就是像這樣的東西{ name: '...
    tobAlier閱讀 652評(píng)論 0 0
  • 關(guān)于JavaScript的淺拷貝和深拷貝 在JS中有一些基本類(lèi)型像是Number、String、Boolean,而...
    成都reactnative閱讀 353評(píng)論 0 0
  • 此文章用于歸納Object的所有方法 在JavaScript中,object是所有對(duì)象的基礎(chǔ)(原型鏈的頂端),所以...
    moonburn閱讀 723評(píng)論 0 5
  • 在說(shuō)深拷貝與淺拷貝前,我們先看兩個(gè)簡(jiǎn)單的案例: //案例1var num1 = 1, num2 = num1;co...
    lueyoo閱讀 658評(píng)論 0 1

友情鏈接更多精彩內(nèi)容