从变量创建新对象

时间:2019-05-25 07:20:02

标签: javascript object ecmascript-6

有没有一种方法可以简化此表达式?

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

资产中的key使用变量名car,这是避免重新定义键名的一种方法吗?

类似这样的东西:

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

谢谢!

2 个答案:

答案 0 :(得分:0)

您的两种解决方案都可以使用。

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

...与...完全相同...

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

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

第二个解决方案称为shorthand property definiton,仅在ES2015或更高版本中有效。

答案 1 :(得分:0)

是的,它可以工作,并且被称为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; }