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

时间:2018-01-11 10:20:15

标签: javascript object declaration

我有以下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中。怎么办?

4 个答案:

答案 0 :(得分:1)

你不能在它存在之前引用它,这就是你想要做的事情。但你可以这样做:

0x1000000....0000

答案 1 :(得分:1)

<强>问题:

事实上,您正在使用second分配undefined的内容,因为当您尝试引用first属性时,在分配时,它不会#39; t尚未存在于您的container对象中。

<强>解决方案:

您需要在分配之前将first属性的内容存储在object中,或者仅使用container属性创建first对象,然后定义{{1获取container.second值与first值相结合的属性。

这就是你的代码:

&#13;
&#13;
second
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你可能正在寻找这个。

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

答案 3 :(得分:0)

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

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