【问题标题】:Create new object from variables [duplicate]从变量创建新对象[重复]
【发布时间】:2019-05-25 07:20:01
【问题描述】:

有没有办法简化这个表达式?

const car = { owner: 'john' }
const assets = { house: { owner: 'paul'}, car: car}

由于资产中的key 采用变量名car,是不是一种避免重新定义键名的方法?

类似这样的:

const assets = { house: { owner: 'paul'}, car}

谢谢!

【问题讨论】:

  • 也许我误解了这个问题,但你的“类似这样的东西”的例子是有效的。你可以按字面意思做,就像那样做。

标签: javascript object ecmascript-6


【解决方案1】:

你所有的两个解决方案都可以工作。

const assets = { house: { owner: 'paul'}, car: car}

... 和 ... 完全一样

const assets = { house: { owner: 'paul'}, car}

这些解决方案都不会重新定义变量car

第二种解决方案称为shorthand property definiton,仅适用于 ES2015 或更新版本。

【讨论】:

    【解决方案2】:

    是的,它有效,它被称为shorthand property notation (ES6):

    const car = {
      owner: 'john'
    }
    const assets = {
      house: {
        owner: 'paul'
      },
      car
    };
    
    console.log(assets);
    .as-console-wrapper { max-height: 100% !important; top: auto; }

    请注意,这与传播不同 - 速记属性将创建一个新对象,传播 (...) 只需直接附加属性即可:

    const car = {
      owner: 'john'
    }
    const assets = {
      house: {
        owner: 'paul'
      },
      ...car
    };
    
    console.log(assets);
    .as-console-wrapper { max-height: 100% !important; top: auto; }

    【讨论】:

      猜你喜欢
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      相关资源
      最近更新 更多