【问题标题】:Assign an object property value to another property while declaring the object在声明对象时将对象属性值分配给另一个属性
【发布时间】:2018-01-11 10:20:14
【问题描述】:

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

【问题讨论】:

  • 你可以Refer this
  • this.first 在分配时不存在。

标签: javascript object declaration


【解决方案1】:

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

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

var container = {
  first: first,

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

console.log(container)

【讨论】:

    【解决方案2】:

    问题:

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

    解决方案:

    您需要在分配之前将first 属性的内容存储在object 中,或者只使用first 属性创建container 对象,然后定义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)

    【讨论】:

      【解决方案3】:

      你可以找这个。

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

      【讨论】:

        【解决方案4】:
        var container = {
            first: {
                a: 1,
                b: 'someString'
            }
        }
        
        container.second = Object.assign(
            {
                c: 34,
                d: 'Something else'
            },
            container.first
        )
        

        【讨论】:

        • 您可能需要详细说明您所做的更改以及解决问题的原因。
        • 虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
        猜你喜欢
        • 2022-11-10
        • 2011-02-17
        • 2019-09-11
        • 2014-04-05
        • 2011-01-13
        • 1970-01-01
        • 2019-07-16
        • 2020-06-22
        • 2020-05-22
        相关资源
        最近更新 更多