Object.assign

語法:

Object.assign(target, ...sources)

參數(shù):

target? ? ? ? 目標(biāo)對(duì)象。

sources? ? ? 源對(duì)象。

返回值:

目標(biāo)對(duì)象

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

var obj = { a: 1 };

var copy = Object.assign({}, obj);

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

深克?。?/p>

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

? let obj2 = 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? JSON.parse(JSON.stringify(obj1));

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

? let obj3 = JSON.parse(JSON.stringify(obj1));

? obj1.a = 4;

? obj1.b.c = 4;

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

合并對(duì)象:

var o1 = { a: 1 };

var o2 = { b: 2 };

var o3 = { c: 3 };

var obj = 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ì)被改變

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

var o1 = { a: 1, b: 1, c: 1 };

var o2 = { b: 2, c: 2 };

var o3 = { c: 3 };

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

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

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

繼承屬性和不可枚舉屬性是不能拷貝的:

var obj = Object.create({foo: 1}, { // foo 是個(gè)繼承屬性。

? ? bar: {

? ? ? ? value: 2? // bar 是個(gè)不可枚舉屬性。

? ? },

? ? baz: {

? ? ? ? value: 3,

? ? ? ? enumerable: true? ? // 對(duì)象的屬性分為可枚舉和不可枚舉之分 是由屬性的enumerable的值決定的

? ? }

});

var copy = Object.assign({}, obj);

console.log(copy); // { baz: 3 }

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1.復(fù)制一個(gè)對(duì)象 constobj={a:1}; constcopy=Object.assign({},obj);...
    lihaiting閱讀 805評(píng)論 0 0
  • Object.assign()方法用于將所有可枚舉的屬性的值從一個(gè)或多個(gè)源對(duì)象復(fù)制到目標(biāo)對(duì)象。它將返回目標(biāo)對(duì)象。 ...
    執(zhí)著_7a69閱讀 1,862評(píng)論 0 2
  • Object.assign是ES6新添加的接口,主要的用途是用來合并多個(gè)JavaScript的對(duì)象。 Object...
    獨(dú)行俠_ef93閱讀 3,902評(píng)論 0 3
  • 1 基本用法 Object.assign方法用于對(duì)象的合并,將源對(duì)象( source )的所有可枚舉屬性,復(fù)制到目...
    Api調(diào)用師閱讀 913評(píng)論 0 4
  • 此文章用于歸納Object的所有方法 在JavaScript中,object是所有對(duì)象的基礎(chǔ)(原型鏈的頂端),所以...
    moonburn閱讀 719評(píng)論 0 5

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