我是JS新手,正在尝试对JS对象进行基本操作。

我有以下对象:

var originalObj = {
   id: 1,
   name: 'originalObj'
}


现在,我想向originalObj添加另一个对象作为字段。

var newObj = {
   newId: 2,
   name: 'newObj'
}


因此,预期结果是:

orginalObj = {
  id: 1,
  name: 'originalObj',
  newObj: {
    newId: 2,
    name: 'newObj'
  }
}


到目前为止我尝试过的是:


originalObj.newObj = newObjoriginalObj['newObj'] = newObj


结果是:

orginalObj = {
      id: 1,
      name: 'originalObj',
      newObj:
    }



Object.assign(originalObj, newObj)
这会将newObj的所有字段添加到与originalObj相同的级别。如下所示:

originalObj = {
      编号:1
      名称:“ originalObj”,
      newId:2
      名称:“ newObj”
  }

最佳答案

取决于您是否想要深拷贝或仅参考。

originalObj.newObj = newObj;将为newObj分配一个引用,其中

originalObj.newObj = Object.assign({}, newObj);将创建一个新的。

注意:如果您使用ECMAScript 2015(第6版,ECMA-262),则可以使用传播运算符...

originalObj.newObj = {...newObj};

示例:https://jsbin.com/yisiyip/edit?js,console

10-02 19:27