簡體   English   中英

將對象添加到對象屬性中,該對象屬性是對象本身並具有對象分配

[英]Adding objects to an object property which is an object itself with object assign

所以說我有這個:

const mainObject = {
  prop1: false,
  prop2: {} or []
}

const minorObject = { name: "name", address: "address" }
const minorObject2 = {name: "name2", address: "address2" }

如何將它們一次添加到mainObject.prop2而不用Object.assign改變mainObject ,如果不可能,那么如何使用 ES6 傳播來完成?

當您想保持主引用不可變時,您需要使用shallow copies ,類似於使用原語時發生的情況。

字符串示例(當字面上聲明時,它們被視為原語):

 var a = 'Hello'; var b = a; b += ' World'; console.log({a, b});

正如你所看到的,改變b變量a仍然是不可變的......這是因為primitives are passed by value

因為Object不是原語,所以它是passed by reference ,上面的例子變成:

 var a = { prop: 'Hello' }; var b = a; b.prop += ' World'; console.log({a, b});

如何將它們一次添加到 mainObject.prop2 而不改變 mainObject ...?

 var a = { prop: 'Hello' } var minorA = { prop1: ' World' }; var minorB = { prop2: ' Moon' }; var b = Object.assign({}, a); //create a shallow copy Object.assign(b, minorA, minorB) // because you can pass as many params you want, you can simplify the previous code in this way: var b = Object.assign({}, a, minorA, minorB);

ES6傳播如何做到這一點? Object spread operator ,即在esnext ,您可以將其與 babel 和Object rest spread transform 一起使用

var b = {...a};

Object.assign 將改變作為第一個參數傳遞的對象,所以如果你想組合兩個對象的屬性而不改變任何一個,只需將一個 Object.assign 包裝在另一個中。

Object.assign(Object.assign({},mainObject),minorObject)

如何將一個對象的元素推入另一個對象?

將 Javascript 對象添加到另一個 Javascript 對象中

google 關鍵字搜索 = 將一個對象添加到另一個對象

還有更多的例子和處理方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM