Операция назначения распаковки объекта?

#javascript #object #assignment-operator #destructuring #argument-unpacking

#javascript #объект #оператор присваивания #деструктурирование #аргумент-распаковка

Вопрос:

Есть ли что-нибудь подобное в JavaScript? В принципе, я ищу что-то в этом роде:

 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}
 

Есть ли встроенный синтаксис для чего-то подобного, или это лучшее, что я собираюсь получить в ES6?

Комментарии:

1. Вы хотите изменить obj_b или перезаписать его новым объектом?

Ответ №1:

Object.assign подойдет.

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

Object.assign(obj_b, obj_a);

console.log(obj_b); 

Ответ №2:

Я не думаю, что такой синтаксис существует, но если вам нужно часто использовать что-то подобное, вы можете обезьянничать с Object классом с помощью служебной функции для него:

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

Ответ №3:

Другой вариант — использовать Object.assign это не оператор, но он выполняет свою работу:

 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