3

Is there anything like this in JavaScript? Basically, I'm looking for something along these lines:

let obj_a = {test: "one", property: "two"};
let obj_b = {test: "1", other: "three"};
let obj_b ...= obj_a; // would be the equivalent of obj_b = {...obj_b, ...obj_a}

Is there builtin syntax for something like that, or is this the best I'm going to get in ES6?

Maurdekye
  • 3,597
  • 5
  • 26
  • 43

3 Answers3

3

Object.assign would do.

let obj_a = { test: "one", property: "two" },
    obj_b = { test: "1", other: "three" };

Object.assign(obj_b, obj_a);

console.log(obj_b);
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
0

I don't think any such syntax exists, but if you need to use something like that a lot, you could monkey-patch the Object class with a utility function for it:

Object.prototype.merge = function(x) { Object.assign(this, x) }
let obj_a = {test: "one", property: "two"};
obj_a.merge({test: "1", other: "three"});
console.log(obj_a);
Christian Fritz
  • 20,641
  • 3
  • 42
  • 71
0

An other option is to use Object.assign it's not an operator but it get's the job done:

Object.assign(obj_b, obj_a)
// {test: 'one', other: 'three', property: 'two'}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

Youssef Bouhjira
  • 1,599
  • 2
  • 22
  • 38