繁体   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