是否有可能对现有对象进行解构?(Javascript ES6)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

例如,如果我有两个对象:

var foo = {
  x: "bar",
  y: "baz"
}

var oof = {}

我想将foo的x和y值传给oof。有没有办法使用es6解构语法来做到这一点?

可能是这样的:

oof{x,y} = foo
提问于
用户回答回答于

不,解构不支持成员表达式,但仅支持当前的纯属性名称。目前已经谈关于这样的esdiscuss,但不建议将它做成ES6。

但是,您也许可以使用Object.assign- 如果您不需要全部属性,您仍然可以使用

var foo = …,
    oof = {};
{
    let {x, y} = foo;
    Object.assign(oof, {x, y})
}
用户回答回答于

虽然丑陋和有点重复,你可以做

({x: oof.x, y: off.y} = foo);

它将读取foo对象的两个值,并将它们写入对象上它们各自的位置oof

就我个人而言,我仍然宁愿阅读

oof.x = foo.x;
oof.y = foo.y;

要么

['x', 'y'].forEach(prop => oof[prop] = foo[prop]);

扫码关注云+社区