如何使用ES6将两个具有功能的对象合并为一个新对象?

时间:2016-04-20 01:06:48

标签: javascript ecmascript-6

我想使用ES6将两个带有函数的对象连接到一个合并对象,不知道如何做到这一点。

例如,我想合并这两个对象:

const first = {
  first: function() {
    return {
      type: FIRST
    };
  }
};

const second = {
  second: function() {
    return {
      type: SECOND
    };
  }
};

进入一个新对象:

const new = {
  first: function() {
    return {
      type: FIRST
    };
  },
  second: function() {
      return {
      type: SECOND
    };
  }
}

最好的方法是什么?我尝试了Object.assign({}, first, second);,但这又返回{}

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:4)

你的榜样确实应该有效:

var joined = Object.assign({}, first, second);

小心使用不带空对象的assign作为第一个参数,例如:

var joined = Object.assign(first, second);

因为first变异

运行自己的代码(和工作)的JSBin示例:

https://jsbin.com/tekokawice/edit?js,console

答案 1 :(得分:2)

您应该可以使用Object.assign:

请注意下面Chris的答案中提到的,这将改变第一个对象。

JSBin example

var joined = Object.assign(first, second);

// joined:

{
  first: function first() {
    return {
      type: FIRST
    };
  },
  second: function second() {
    return {
      type: SECOND
    };
  }
}