在声明对象时将一个对象 属性 值赋给另一个 属性

Assign an object property value to another property while declaring the object

我有以下 Javascript 代码:

var container = {
  first: {
    a: 1,
    b: 'someString'
  },

  second: Object.assign({
      c: 34,
      d: 'something else'
    },
    this.first
  )
}

console.log(container)

这会打印:

{ first: { a: 1, b: 'someString' },
  second: { c: 34, d: 'something else' } }

不过,我希望它是:

{ first: { a: 1, b: 'someString' },
  second: { c: 34, d: 'something else', a: 1, b: 'someString'} }

所以我希望 first 中的所有(键,值)对也出现在 second 中。怎么做到的?

您不能在对象存在之前引用它,而这正是您想要做的。但是你可以这样做:

var first = {
  a: 1,
  b: 'someString'
};

var container = {
  first: first,

  second: Object.assign({
      c: 34,
      d: 'something else'
    },
    first
  )
}

console.log(container)

问题:

实际上,您正在将 second 的内容分配给 undefined,因为当时您正试图在分配时引用 first 属性 , 它在您的 container 对象中尚不存在

解法:

您需要在赋值之前将 first 属性 的内容存储在 object 中,或者仅使用 first [创建 container 对象=44=] 然后定义 container.second 属性 以获得 first 值与 second 值的组合。

这怎么可能是你的代码:

var container = {
  first: {
    a: 1,
    b: 'someString'
  }
};

container.second = Object.assign({
    c: 34,
    d: 'something else'
  },
  container.first
);

console.log(container)

您可能正在寻找这个。

var a = new function(){
    this.b = {name:"Vignesh",place:"India"};
    this.c = {name:"Vijay",place:"TamilNadu",b:this.b};
    this.d = {name:"Vijay Sethupathi",place:"Namakkal",c:this.c};
}();
console.log(a);

var container = {
    first: {
        a: 1,
        b: 'someString'
    }
}

container.second = Object.assign(
    {
        c: 34,
        d: 'Something else'
    },
    container.first
)