将对象添加到对象属性,该属性是具有对象分配的对象本身

时间:2016-10-16 07:31:12

标签: javascript

所以说我有这个:

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

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

如何在不mainObject.prop2 mainObject的情况下将其添加到Object.assign,如果不可能,那么如何通过ES6传播完成?

3 个答案:

答案 0 :(得分:1)

如果要保留主要参考不可变,则需要使用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的情况下将它们一次添加到mainObject.prop2中??



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};

答案 1 :(得分:0)

Object.assign会改变作为第一个参数传递的对象,所以如果你想要组合两个对象的属性而不改变它们,只需将一个Object.assign包装在另一个对象中。

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

答案 2 :(得分:-1)

How to push elements of an object into another object?

Add Javascript Object into another Javascript Object

google keyword search = 将对象添加到另一个对象

还有更多的例子和方法。